atijust's blog

技術的なこととか。

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を操作して開けておく。

f:id:atijusts:20130505200153p:plain

以上で準備は完了。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コマンドのパスを指定する必要がある。

f:id:atijusts:20130505201259p:plain

繋がった。レスポンスが心持ち良くなったかも?

moshは低品質回線での使い勝手を良くする以外にも、Ctrl-Cの挙動を改善してくれたりするので(でっかいファイルをcatしてしまってCtrl-Cが効かなくなったことありません?)、メインのPCでもSSHの代わりにいいかもしれない。