SSH代替のmoshでMac OSX10.8(Mountain Lion)からEC2インスタンスに接続
WiMAX経由でEC2インスタンスにSSH接続して作業していると、時間帯によってはシェルの反応がもっさりだったり、接続が切れちゃったりでストレスマッハでハゲる。
そこで、回線品質が低い場合でも快適に作業できると噂のmoshを導入。
まずはMBA。インストーラがあるみたいだけど、素直に(?)brewでインストールする。
$ brew install mobile-shell
なるほど。moshはMobile Shellの略なわけね。
次はEC2。OSはAmazon Linux。パッケージないみたいなのでソースからビルドする(あとで気づいたんだけどEPELにあった。試してないけど。)。./configure
したらProtocol Bufferが必要だといわれたので、あらかじめ入れておく。Purotocol Buffer以外にも依存しているモジュールがあるようだが、すでに導入済みだったみたい。お試しなので、インストール先は/opt
に。
$ wget http://mosh.mit.edu/mosh-1.2.4.tar.gz $ tar xvf mosh-1.2.4.tar.gz $ cd mosh-1.2.4 $ sudo yum install protobuf-devel $ ./configure --prefix=/opt/mosh $ make $ sudo make install
通信にUDPポート60000-61000を使うので、Security Groupを操作して開けておく。
以上で準備は完了。moshはサーバ側であってもデーモンを常駐させておく必要がないので、upstartのスクリプトを書いたりしなくてもよい。
クライアント側のMacからアクセスしてみる。
$ mosh --ssh="ssh -i aws.pem" --server="/opt/mosh/bin/mosh-server" ec2-user@hogehoge.compute.amazonaws.com
ログイン自体はSSH経由で行うようだ。ログインに使うSSHのキーを指定したい場合は--sshオプションを使う。サーバ側は非標準な場所にインストールしたので、mosh-serverコマンドのパスを指定する必要がある。
繋がった。レスポンスが心持ち良くなったかも?
moshは低品質回線での使い勝手を良くする以外にも、Ctrl-Cの挙動を改善してくれたりするので(でっかいファイルをcatしてしまってCtrl-Cが効かなくなったことありません?)、メインのPCでもSSHの代わりにいいかもしれない。