Ubuntu Weekly Recipe

第220回 Ubuntuでモバイルシェル「Mosh」を使う

この記事を読むのに必要な時間:およそ 3.5 分

Moshというソフトウェアが最近話題になっています。moshと言えばR6RS準拠のSchemeインタプリタを連想する方も多いと思いますが,今回紹介するのは同名の別ソフトウェアです。

Moshとは,端末をリモートで操作するためのソフトウェア,簡単に言ってしまえばSSHの代替となるソフトウェアです。今週のレシピでは,SSHよりも高速で,接続のローミングができるMobile Shell,略してMoshを紹介します。

Moshのインストール

Ubuntuでは,12.04のUniverseリポジトリにMosh 1.1.3のパッケージが用意されています。また10.04,10.10,11.04,11.10の各リリースにも,backportsリポジトリにMosh 1.1.1がバックポートされています。つまりUbuntuならば,ソースビルドや野良パッケージなどに頼らずとも,Moshを簡単に使いはじめることができるというわけです。

moshパッケージには,サーバー側で動作するmosh-serverと,接続するクライアントであるmosh-clientの両方が含まれています。opensshはサーバーとクライアントが別パッケージになっていましたが,moshの場合はサーバーとクライアント双方に,同じmoshパッケージをインストールすることになります。

図1 10.04~11.10までの場合は,Backportsを有効にする

図1 10.04~11.10までの場合は,Backportsを有効にする

moshパッケージのインストール

$ sudo apt-get install mosh

Moshのしくみ

前述の通り,Moshはクライアントであるmosh-clientと,サーバーであるmosh-serverで構成されるソフトウェアです。まずmosh-serverですが,これはデーモンとして常時起動しているプログラムではありません。mosh-serverコマンドを実行すると,mosh-serverは今回限りの接続用のキー※1と,待ち受けるUDPのポートを標準出力に表示し,それから一定時間(60秒)だけこのポートでクライアントの接続を待ちます。ユーザーはmosh-serverが生成したキーをクライアントの環境変数「MOSH_KEY」に設定した上で,mosh-clientを使用してこのポートに接続を行なう必要があります。なお接続が行なわれなかった場合は,60秒後にmosh-serverは自動的に終了します。

mosh-serverの実行例

(server)$ mosh-server

MOSH CONNECT 60001 Vec7hQHkpn9bVFfM92A42Q

mosh-server (mosh 1.1.3)
Copyright 2012 Keith Winstein <mosh-devel@mit.edu>
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

[mosh-server detached, pid = 3184]

mosh-serverがUDPのポートを待ち受けていることを確認

(server)$ sudo netstat -uap
稼働中のインターネット接続 (サーバと確立)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       PID/Program name
udp        0      0 *:60001                 *:*                                 3184/mosh-server

mosh-clientから接続する

(client)$ MOSH_KEY=DfFLaXW8vwWXjlO47gnyXg mosh-client www.example.com 60001

図2 60秒以内にクライアントが接続してこなかった場合,mosh-serverは停止する

図2 60秒以内にクライアントが接続してこなかった場合,mosh-serverは停止する

※1
これはbase64でエンコードされた22バイトの文字列で,セッションを保護するための128bitのAESキーです。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入