mosh は MIT で開発された、SSH を賢い感じにラップしてくれるツールらしい。mobile shell の略で、モバイルの回線で SSH 接続してて IPアドレスが変っちゃったりしても勝手に再接続してくれたり、キーボード入力をいちいちリモートの応答を待たずにローカルエコーしてくれて体感速度さくさくだったり、ついでに文字コードも適切に扱ってくれちゃったりするらしい、そんな至れり尽せりの MacBook Pro に入れてみた。
と、なんかその辺りは既に日本語でもいろいろ紹介されてるので参照のこと。
- mosh: MITからモバイル時代のSSH代替品 - karasuyamatenguの日記
- PSP-4 SSH の代わりに MOSH を使ってみた。Mobile 端末への架け橋 MOSH
- Jun Mukai's blog: mosh (mobile shell)の論文を読んでみた
Mac OS X への導入は、基本的には Homebrew (brew
) が入ってれば brew install mosh
brew install mobile-shell
だけでおk…のはずなんだけど、こんなエラー。
megurine # mosh NmnRtz dyld: Library not loaded: /usr/local/lib/libpcre.0.dylib Referenced from: /usr/local/bin/zsh Reason: image not found ssh_exchange_identification: Connection closed by remote host
あ、$HOME/.ssh/config
にはこんな設定してあります。
Host NmnRtz HostName xxx.xxx.xxx.xxx User username Port 5555
Port は well-known な 22番ポートから変更してる場合だけ。で、本題に戻ります。
なんで /usr/local/lib/libpcre.0.dylib を探しにいってるのかもよくわかんないんだけど、とりあへず libpcre.0.dylib が入ってるか調べてみる。
megurine # locate libpcre.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libpcre.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/lib/libpcre.dylib /usr/lib/libpcre.dylib /usr/local/Cellar/pcre/8.21/lib/libpcre.dylib /usr/local/Cellar/pcre/8.30/lib/libpcre.dylib /usr/local/lib/libpcre.dylib megurine # locate libpcre.0.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libpcre.0.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/lib/libpcre.0.dylib /usr/lib/libpcre.0.dylib /usr/local/Cellar/pcre/8.21/lib/libpcre.0.dylib megurine # locate libpcre.1.dylib /usr/local/Cellar/pcre/8.30/lib/libpcre.1.dylib /usr/local/lib/libpcre.1.dylib
ほむぅ… /usr/local/Cellar/pcre/8.30/lib
にあるのは brew install mobile-shell
のときに依存するパッケージとして入れてくれたはずなんだけど。
仕方がないのでこんな解決策をとりました。
sudo ln -s /usr/lib/libpcre.0.dylib /usr/local/lib/
とりあへずこれで動くやうになって良かった良かった…? これでいいのか……?
あと、ログインしたいリモートの方にも mosh
を入れておく。
Ubuntu の 11.10 以降なら、これだけで入る。
sudo aptitude install mosh
aptitude
じゃなくて apt-get
を使ってる場合はそれに読み替へること。
Ubuntu 11.04 以前なら、その前にこれを実行しておくこと。
sudo add-apt-repository ppa:keithw/mosh sudo aptitude update
再度 mosh NmnRtz
とやってみたところ、無事にログインに成功。まあ、めでたしめでたし。
ためしに MacBook Pro のクラムシェル(画面と本体)を閉ぢてスリープにした後に復帰したところ、勝手に再接続してくれて、byobu
も tmux
も、ほんとに何事もなかったかのやうに利用を再開してくれました。
これで mosh で快適なリモートログイン生活が送れますね!いえーい