初めまして。HTMLファイ部兼ダーツ部のkubota(@kubosho_)です。
最近はAndroidブラウザーのレンダリングエンジンの気持ちになりながら仕事をしています。
このエントリーはtech.kayac.com Advent Calendar 2012 16日目の記事です。
さて、テーマが「私の中のマイイノベーション 2012」ということで、今年はいろいろとイノベーションがあったのですが、その中でもイノベーションだったのが「Vim」でした。
元々Emacs派だったのですが、弊社HTMLファイ部の部長である@edo_m18に「Vimいいよいいよ」と洗脳おすすめされた結果、Vimを使い出して今では8:2くらいの割合でVimを多く使っています。
しかし、それよりももっとイノベーションを起こしたものが昨日できました。
それがmoshです。
元々は@typesterの#14 「2012年 私の中のマイイノベーション」tech.kayac.com Advent Calendar 2012の記事を見て、
「なんだか良さげだし試しにインストールしてみるかー」
と軽い気持ちで、インストールしてみて使ってみたのですが、結果として日頃SSHに対して感じていた不満点が解消されて、「moshまじイノベーション!」と1人で盛り上がってました。
自分がなぜmoshがイノベーションかと思ったか。
思うきっかけになった特徴を、mosh: MITからモバイル時代のSSH代替品 - karasuyamatenguの日記の記事から引用すると、以下の2つです。
・遅いリンクでもローカルエコーにより快適
・断続的な接続でも平気
では、1つずつ書いていきます。
よくあるのが、ネット接続が遅い環境だとリモートサーバーにSSHで接続した場合、打ち込んだコマンドがなかなか反映されずザ・ワールド状態になってしまうことです。
しかしmoshの場合は、とりあえずコマンドは打てて、リモートサーバー上に反映されていない箇所は下線が引かれます。「なんのコマンドを打ち込んだか画面に反映されないから分からない!」ということがなくなり、とても快適になりました。
例えば、電車内でリモートサーバーにつないで何か作業をするということもあると思います。そんな時に、電車がトンネルなどに入って接続が切れると再接続になってしまったり、最悪の場合接続した画面のままフリーズしてしまうこともあります。
しかしmoshの場合は、ネット接続が復活した時に、再接続の手間がなく何事も無かったかのようにそのままリモートサーバーで作業ができます。
さすがプロトコルとアプリケーションを同時に作ってしまっただけあって、これだけでもイノベーションすぎます。MITすごい。
さてべた褒めしてきたmoshですが、「そんな事言ってもインストールが大変なんでしょ?」と思っている人もいると思います。
実際、自分がmoshをインストールするときに色々と調べたのですが、git cloneして、./configureして、makeして…と面倒なインストール方法しか最初見つからなかったため、インストールを一瞬諦めかけました。
しかし冷静に公式サイトを見てみると、自分がさくらのVPSにインストールしているDebian バージョン6.0.6(squeeze)であれば、backportsというのを追加するだけでaptitudeでインストールできるようになりました。
具体的な方法としては以下の通りです。
自分はMac OS X Lion + Homebrewという環境なので、以下のコマンドをターミナル上から実行します。
brew install mobile-shell
これだけで、ローカル側は終わりです。
sudo vim /etc/apt/sources.list
おもむろにsources.listを開き、最後の行あたりに以下の行を追加します。
deb http://backports.debian.org/debian-backports squeeze-backports main
追加し終えたらパッケージのアップデートを行います。
sudo aptitude update
アップデートが終わったら、moshをインストールします。
sudo aptitude install mosh
インストールが終わり接続テストと行きたい…ところですが、ポートをUDP 60000:61000を開けてやらないと、Ctrl-^でキャンセルしない限り永遠に接続待ちの状態になってしまいます。
なので、iptablesの設定でポートを開放します。具体的には以下のような感じです。
sudo vim /etc/iptables/rules# moshのために以下の行を追記-A INPUT -p udp -m udp --dport 60000:61000 -j ACCEPT
これでリモート側の準備は完了です。
SSHで接続する場合「ssh example.com」とコマンドを打って実行すると思います。
moshの場合でもそれは変わりなく、sshの部分をmoshとして「mosh example.com」とするだけです。
これだけでmoshが使えます。まじイノベーション。
そんなあなたでも大丈夫。以下のようにするだけです。
mosh --ssh="ssh -p ポート -l ユーザー名" example.com
これでポートを変え、かつユーザー名も違う名前で接続していた場合でも、問題なくmoshが使えます。
まじイノベーション。
明日は@Maco_Tasuの記事です。お楽しみに!
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。