• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

mosh

date: 2021-07-09 excerpt: moshについて

tag: mosh


moshについて

概要

  • roamingとlocal echoを提供するソフトウェア
    • roamingとは通信経路の切り替えに対応する
    • local echoとは通信が安定しない環境などで結果を予測して表示する仕組み
  • sshのUDPラッパー
    • UDPのポートはレンジで60000-61000を使用する
  • macOSのwcwidth関数の依存
    • 一部の絵文字が表示されない問題と,幅が正しく表示されない問題がある
      • vim, tmuxなどで表示が崩れる

24 bit color(true color)に対応させる

  • moshをパッケージからインストールするとtrue colorに対応しないことがある
    • vimの色等で繊細な表現ができないなどのデメリットがある
  • github.com/mobile-shell/moshから直接ビルドすることで対応可能である

debian/ubuntuでbuildしてインストール

$ sudo apt remove mosh # もしaptでインストールされていたら外す
$ sudo apt install protobuf-compiler
$ cd ~/.opt
$ git clone https://github.com/mobile-shell/mosh.git
$ cd mosh
$ sh ./autogen.sh
$ ./configure
$ make -j 8
$ sudo make install
  • 参考
    • Compile and install mosh error on Linux

macOSでbuildしてインストール

protocolbufferのbuildとインストール

$ cd ~/.opt
$ git clone https://github.com/protocolbuffers/protobuf
$ cd protobuf
$ ./autogen.sh
$ ./configure
$ make -j 8
$ sudo make install

protocolbuffersのbrewでインストール

$ brew install protobuf
$ brew link protobuf

moshのbuildとインストール

$ cd ~/.opt
$ git clone https://github.com/mobile-shell/mosh.git
$ cd mosh
$ ./autogen.sh
$ ./configure # 2023-06にワークしない
$ ./configure CC=clang CXX=clang++ CXXFLAGS='-std=c++17' # 2023-06のアドホックな対応
$ make -j 8
$ sudo make install

使用法

最小の構成コマンド

$ mosh user@server 

サーバの実行ファイルを指定する(osxをホストとするとき)

$ mosh user@server --server=BIN_PATH

BIN_PATHは以下のケースが多い

$ mosh user@server --server=/usr/local/bin/mosh-server

プライベートキーを指定して接続

$ mosh --ssh="ssh -i KEY_PATH" user@server

moshクライアントの終了について

  • サーバサイドに接続できなくなった時、moshクライアントは自動的に終了することはないので手動で終了する必要がある
  • ctrl+^でモードに入って.(ピリオド)で終了する事ができる

predictオプションについて

  • 投機的なローカルエコーを制御するオプション
  • キーを打ってから戻りが遅い場合、とりあえず投機的な結果から画面に表示するなど、遅延を軽減する効果がある

-aオプション

  • (moshが自信があれば)常に投機的に予測する

-nオプション

  • 投機的なローカルエコーを使用しない

トラブルシューティング

macOSに接続する際に、mosh-serverが見つからないと出る

  • 原因
    • sshdの標準PATHに/usr/local/binが含まれていないことが原因
  • 対応
    • /ssh/の”sshした際のサーバサイドの環境変数について”を参照して、PATHを追加する

macOSから他のデバイスにmosh接続したときに一部の絵文字が表示されない

  • 原因
    • appleのwcwidthというCライブラリに依存しており、このライブラリで表示可能かを判定している
    • wcwidthが古く、最新の絵文字に追いつけていないのが原因
  • 対応
    • バージョンアップ待ち
    • sshを使うことで回避できる
  • 参考
    • Unable to display some UTF-8 sequences #1186

moshで接続したときにターミナル上の文字のコピーアンドペーストに改行が含まれる

  • 原因
    • 不明
  • 対応
    • sshを使うことで回避できる

参考

  • ゼロ幅接合子/zero-width joiner


mosh Share Tweet