karasuyamatenguの日記

 | 

2012-04-11

mosh: MITからモバイル時代のSSH代替品

06:15

http://mosh.mit.edu/

  • ローミング可能
  • 断続的な接続でも平気
  • ローカルエコーで快適なレスポンス

などの機能をそなえたSSH代替ターミナルソフト。その名も「モッシュ

iPhone/iPadでウロウロしながらサーバ作業をするのを想定しているようだ。ドキュメントやパッケージの充実度からしてもかなり高質のプロジェクト。こいつら本気でSSHを越えようとしている。

こんな能書き

ローミングとか今やっていないので、全ての恩恵にはあずかれないが、いくつか検証できた。

これならサーバにつなげっぱなしにしたターミナルをずっと開けていられる。カフェに移動したら再接続とかする必要がなくなる。

これだけでも凄いが、このプロジェクトは単にローミング可のターミナルを作ったのではない。State Synchronization Protocolという状態同期可プロトコルを開発し、moshはそれをもちいた「最初のアプリケーション」という位置付けになっている。単にGUI環境を作るのでなく、それを可能にするプロトコルとツールキットを開発したMITらしい壮大な発想だ。

学術的な話を読みたが、取りあえず使えるようにしよう。

「Getting Mosh」セクションに重なOS環境のパッケージが準備されている。

Lucidにはadd-apt-repository、apt-get update、installですんなり入った。

ソースからインストールする際のはprotocol buffersとboostライブラリとヘッダーが必要となるが、依存モジュールもちゃんと明記してある。

ライアントコマンドはなんとperlスクリプト。IO::Ptyが必要になる。debianならlibio-pty-perlで入る。あるいはcpan IO::Ptyで入れる。

$ mosh
Can't locate IO/Pty.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/bin/mosh line 24.
BEGIN failed--compilation aborted at /usr/local/bin/mosh line 24.

$ mosh
Usage: /usr/local/bin/mosh [options] [--] [user@]host [command...]
        --client=PATH        mosh client on local machine
                                (default: "mosh-client")
        --server=PATH        mosh server on remote machine
                                (default: "mosh-server")

        --predict=adaptive   local echo for slower links [default]
    -a      --predict=always     use local echo even on fast links
    -n      --predict=never      never use local echo

    -p NUM  --port=NUM           server-side UDP port

        --help               this message
        --version            version and copyright information

Please report bugs to mosh-devel@mit.edu.
Mosh home page: http://mosh.mit.edu

とりあえずサーバに向けてみる

サーバ側にmoshインストールされていないとエラーになる。sshがユーザのパス上のmosh-serverを探して立ち上げる。

$ mosh example.com
bash: mosh-server: command not found
Connection to example.com closed.
/usr/local/bin/mosh: Did not find mosh server startup message.

ファイアーウォール設定:

サーバの60000-61000のUDPポートを開ける。

sudo ufw allow 60000:61000/udp

これが閉まっていると、ずっと接続待ち状態になってしまう。

そういうときは「Control-^ .」(コントロール+シフト+6押してからポチ)で終了。

設定のまとめ

これだけ。

SSHなんてもう完結していて進化の余地が無いなんて思ってしまうのは想像力な無い証拠なんだな。どんなに優れたものでも、さらに向上の余地はある。それをイメージする想像力と実現する能力のある奴が歴史をつくっていくと感じさせるプロジェクトだ。

 |