さくらの VPS にモバイル時代の SSH の代替品 Mosh をインストールしてみた

Mosh というのが話題になっているようですので、さくらの VPS サーバにインストールしてみました。Mosh とは mobile shell の略で、SSH の代替品だそうです。

  • IP アドレスが変わっても接続が切れない
  • スリープから復帰しても接続が切れない
  • サーバの応答を待たないのでネットワークラグがない

とか。ただし、Mosh は認証に SSH を使いますので、SSH を削除して使うことはできません。

CentOS 6.2 用の moshRPM はないようですので、今回は RPM をビルドしてインストールしました。

RPM のビルド環境の構築

以下のパッケージが必要になりますが、すでにインストール済みでした。

$ sudo yum install rpm-build
$ sudo yum install redhat-rpm-config
$ sudo yum install make gcc

RPM をビルドするためのフォルダを作成します。

$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

MoshRPM の作成

ビルドに必要なパッケージをインストールします。

$ sudo yum -y install protobuf-compiler protobuf-devel
$ sudo yum -y install libutempter-devel
$ sudo yum -y install boost-devel
$ sudo yum -y install ncurses-devel
$ sudo yum -y install zlib-devel

Rawhide から SRPM を取得してビルドしてみたら、できました。

$ wget http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/m/mosh-1.1.1-1.fc18.src.rpm
$ rpmbuild --rebuild mosh-1.1.1-1.fc18.src.rpm

さくらの VPS サーバに Mosh をインストール

依存関係で perl-IO-Tty が必要でした。

$ sudm yum -y install perl-IO-Tty
$ sudo rpm -i rpmbuild/RPMS/x86_64/mosh-1.1.1-1.el6.x86_64.rpm 

iptables の設定

mosh は、SSH でユーザがログインした後、サーバ上で mosh-server を起動し、UDP ポート 60000〜61000 を使用します。そのポートを開ける必要があります。

iptables の設定に以下を追加しました。

iptables -A INPUT -p udp -m udp --dport 60000:61000 -j ACCEPT

iptables の設定を変更した後は、忘れずに保存しましょう。

$ sudo service iptables save

Ubuntu 11.10 に Mosh をインストール

$ sudo add-apt-repository ppa:keithw/mosh
$ sudo apt-get update
$ sudo apt-get install mosh

http://mosh.mit.edu/ に、Mac 版や他の LinuxFreeBSD でのインストール方法が記載されています。Windows 版はないようです。

Ubuntu からさくらの VPS サーバにログイン

ssh の代わりに mosh コマンドを使います。

$ mosh ホスト名

~/.ssh/config にサーバの設定がしてあれば、例えば、次のようになります。

$ mosh sakura