各所で流行りの様なので入れてみました。そもそも、ココしばらく週末は家に居なくて、もっぱらsshで自宅とやり取りをしていたので、これは試してみたい所です。特に電車内ではトンネルに入ったりするとブツブツ切れるので、local echoの恩恵には期待したい所ですが・・・。
サーバ側へインストール
こちらを参考にすすめます。自宅のサーバは、更新がメンドイのでFedora16で動き続けています。*1ともあれ、通常のリポジトリ以外にも
と、これだけ追加してあるので多分yumで入るでしょう。
[moguriso@mogris ~]$ sudo yum install mosh ==================================================================================================================================================== Package アーキテクチャ バージョン リポジトリー 容量 ===================================================================================================================================================== インストール中: mosh x86_64 1.2.3-1.fc16 updates 214 k 依存性関連でのインストールをします: perl-IO-Tty x86_64 1.10-8.fc16 updates 40 k トランザクションの要約 ===================================================================================================================================================== インストール 1 パッケージ (+1 依存するパッケージ) 総ダウンロード容量: 253 k インストール済み容量: 870 k
ちゃんとありました。mosh-serverは、どうやら単なるプログラムのようです。(daemonとかserviceと言われるものではなく、常時起動しているものでもないらしい)server側でmosh-serverを起動し、生成されたキーとポート番号をクライアント側で指定して接続する、と。。。ほほう。メンドイ、、、
クライアントのインストール
クライアントは手元のXubuntu(12.04)です。何も考えず
moguris@crowne:~$ sudo apt-get install mosh
します。あっさり入りました。
接続
事前にサーバ側でファイアーウォールに穴を開けておく必要があります。Fedoraだとsetupコマンドが使えるので、とても簡単です。
[moguriso@mogris ~]$ sudo setup
すると
こんな感じでインタラクティブウィンドウが開きます。「ファイアーウォールの設定」を選択してEnter。
「カスタマイズ」を選択してEnter。
「転送」を選択してEnter。
「追加」を選択してEnter。
ポートに60000、プロトコルにudpを入れてEnter。同じ要領でポート60001、プロトコルudpも追加します。終わったら、間違えて閉じるや取り消しを押さないように気をつけてOKを選択してEnter。
iptablesの再起動を促すこのメッセージが出れば成功です。
サーバ側でmosh-serverを起動します。
[moguriso@mogris ~]$ mosh-server MOSH CONNECT 60001 Sb4Lamc77YvSivMZWmMt1A mosh-server (mosh 1.2.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 = 29889]
このサーバは60secアクセスしないと自動的に終了するそうです。次にクライアントからmosh-clientでアクセスします。
moguris@crowne:~$ MOSH_KEY=Sb4Lamc77YvSivMZWmMt1A mosh-client xxx.xxx.xxx.xxx 60001
割とあっさりつながりました。
moshコマンドで上記手順を自動化
参考にしたページにもあるとおり、
と、これは冗長で面倒です。これまた参考ページに簡単な解決法としてmoshコマンドの利用法が記載されています。
ここで1つ問題があり、ver 1.1.3のmoshコマンドではsshのポート番号変更に対応していない様です。そもそもmoshコマンドはperlスクリプトなので /usr/bin/mosh を開けば該当部分は
203 my $quoted_self = shell_quote( $0 ); 204 exec 'ssh', '-S', 'none', '-o', "ProxyCommand=$quoted_self --fake-proxy -- %h %p", '-t', $userhost, '--', "$server " . shell_quote( @server ); 205 die "Cannot exec ssh: $!\n";
という感じになっており、port番号を指定させる程度ならココにpatchを当てれば簡単に出来そうです。
が、もっと簡単な方法として ver 1.2.3に更新してしまう方が楽です。(default: Xubuntu 12.04->1.1.3, Fedora16->1.2.3)ver 1.2.3のmoshコマンドであれば、下記のようなオプションでsshコマンドに好きなオプションを付与できます。
71 --ssh=COMMAND ssh command to run when setting up session 72 (example: "ssh -p 2222") 73 (default: "ssh")
mosh公式のページには、mosh用のppaリポジトリの追加方法がトップページにあります。。。
$ sudo add-apt-repository ppa:keithw/mosh You are about to add the following PPA to your system: Mosh is a remote terminal application that supports intermittent connectivity, allows roaming, and provides speculative local echo and line editing of user keystrokes. More info: https://launchpad.net/~keithw/+archive/mosh Press [ENTER] to continue or ctrl-c to cancel adding it gpg: 鍵輪「/tmp/secring.gpg」ができました gpg: 鍵輪「/tmp/pubring.gpg」ができました gpg: 鍵7BF6DFCDをhkpからサーバーkeyserver.ubuntu.comに要求 gpg: /tmp/tmp9eiyhR/trustdb.gpg: 信用データベースができました gpg: 鍵7BF6DFCD: 公開鍵“Launchpad PPA for Keith Winstein”を読み込みました gpg: 処理数の合計: 1 gpg: 読込み: 1 (RSA: 1) OK $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージはアップグレードされます: mosh アップグレード: 1 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 334 kB のアーカイブを取得する必要があります。 この操作後に追加で 156 kB のディスク容量が消費されます。 続行しますか [Y/n]?y mosh (1.2.3-0~855~precise1) を設定しています ..
公式ではupdate後にinstall moshさせていますが既にinstall済みなのでupgradeすれば自動的に更新してくれるみたいです。無事1.2.3になりました。
$ mosh --ssh="ssh -X -p xxx" tachyon
余計な手間無くアクセス可能になりました。が、-Xしているにも関わらず、Xの画面転送が出来ていません。という訳でマニュアルを読むと
mosh does not support X forwarding or the non-interactive uses of SSH, including port forwarding or sshfs.
( ゚д゚)!
まあ、電車やら基本的に通信状況の悪い場面では無くても困らないんですが。。。これは対応してもらいたいなぁ。。。