MoshをインストールをMacにインストールする

今までうちのブログを見てくれている人は、VPSの設定をしている人はsshを使ってVPSを操作しているよね?
使っているとわかるんだけど、ある程度時間が経つとセッションが切断してしまうので、面倒だけど再ログイン→suでrootに、という作業を行っていると思う。
それが一気に解消されるツールがある。
それがMosh
もうめちゃくちゃ便利。

※注意
下記設定はさくらインターネットのVPSの新プラン(CentOS6 64Bitバージョン)で行なっています。
Windows、iOSではクライアントプログラムがないため、使うことができません。
クライアントはMacOS10.6以降、そして下記設定を終了したものとして書いています。

VPSセキュリティ設定

【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】

【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】

【セキュリティ】sshでのrootログインを禁止する【乗っ取り対策】



Moshとは

Moshはサーバーへのリモート接続を強化するツールなのだが、MoshをインストールしてもVPSへのログイン自体はターミナルやiTermを使ってログインする。
一見なにも変わらないように見えるが、使い勝手は大幅に向上する。
一度使うと便利になりすぎて、通常のsshでログインをする気にもなれなくなるほど便利。

切断されない

VPSをいじっている時にちょっと離席したり、ブラウザでの調べものが長くなってしまう事ってない?
んで、気がつくとVPSでのリモート接続が切断されてしまっていることがよくある。
ありまくる。
ありすぎて困る。
またVPSにログインしてrootになり、再びconfファイルを開くのが死ぬほど面倒なんだよね(;´Д`)
だが、Moshを使ってログインすると、切断されない。
[プロセスが終了しました]
っていうあのイラつく文字を見なくてすむ。
しかも、Macをスリープしても切断されない。
それどころか端末のIPアドレスが変わっても切断されない。
MacBookAirでテザリングしながらVPSをいじり、ぱたっと閉じてスリープにし、今度は家のネットワークに接続してもまだセッションを維持している。
恐ろしいほどの粘り強さ。
お陰でイライラしながらブログを書かなくてよくなった。

動作がキビキビ

コマンドを入力したりすると、若干のタイムラグを感じることはないだろうか。
カーソルの移動などがもたつくことが多々ある。
それが一切なくなっちゃう。
もうサクサク入力、サクサク移動。
ローカルで使ってるのか?ってくらい早くなる。
通常のsshでログインした時の入力は、サーバーへ直接コマンドを入力をしているのでサーバーのスペックや回線速度に依存する。
だがMoshでログインした場合、サーバーや回線の動作が早くなっているわけではなく、一旦ローカルで入力したコマンド等をMoshがサーバーにアップロードするようになっている(ローカルエコー機能)ので、あたかもローカルの速さで入力しているような速さに見えるってわけ。
これでvimでの入力も滅茶苦茶捗る。

インストールしてみよう

まず、VPSにMoshをインストールする。

[root@ ~]# yum -y install mosh

これでMoshはインストールされた。

iptablesの設定

Moshはポート60000〜61000のポートを使うので、それを開ける。

[root@ ~]# vi /etc/sysconfig/iptables

下記の行を
-A FIREWALL -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
の下にでも足す。

-A FIREWALL -p udp -m udp --dport 60000:61000 -j ACCEPT

:wqで終了し、iptablesを再起動する。

[root@ ~]# service iptables restart

うまく再起動すればVPSでの作業は終了。

Macでの設定

Moshのサイトでmosh-1.3-2.pkgをダウンロードする。

Mosh2

ダブルクリックして開けばインストーラが立ち上がるのでインストール。

インストールが終わったら、今度はターミナルを起動する。
自分のMac内のターミナルが起動するので、sshの設定ファイルを作成する。

$ vi /Users/ユーザー名/.ssh/config

ユーザー名の部分は自分のMacのユーザー名ね。
まっさらなファイルが開くので、下記を入力。

>Host vps
HostName VPSのIPアドレス又はドメイン名
User VPSログインユーザー名
Port 10022

Hostの名前はなんでも良い。
【さくら】VPSサーバーのパフォーマンスを向上させる。【DTI】で、sshでのログインポートを10022以外に変更している場合はPortにそのポート番号を入力。
認証鍵を使っている人は、
IdentityFile キーのパス
を足す。
入力したら:wqで終了。
これで設定は全て終了した。

ログインしてみよう

ターミナルを開き、下記コマンドを入力する。

$ mosh vps

これだけでVPSにログイン出来る。
vpsの部分はHostで決めた名前ね。
凄まじいキビキビとした動作に驚くはず。

Mac最高

あまりの便利さに感動した。
Mac使っててよかったと心から思ったわw
~/.ssh/confgの便利さとも相まって手放せない神ソフト。
iPhoneやiPad等のモバイルツールとの相性が凄い良さそうだから、ぜひクライアントアプリ作って欲しいな。

DTIのVPSを使っている人も多分同じ方法でインストールできるとは思います。
実験はしてないのでわからんけどw

Winを使っている人も、MacBookAir Retinaが発売したら買おうかなって思ったでしょ?w
自分はいっぱいMac持ってるけど買うけどね!w
MITの天才達に感謝です。

MoshをインストールをMacにインストールする」への11件のフィードバック

  1. sin

    先日は、ありがとうございました。yahooで設定してみたら動きました!ありがとうございます!

    返信
    1. 葛葉 キョウジ(管理人) 投稿作成者

      お、そうですか。
      それは良かったですねヽ(´ー`)ノ

      返信
  2. きんちゃん

    お世話になります。きんちゃんです。

    ssh なんかで一度接続を確立した後、しばらく使用していないと接続断となるのは、よくある問題なのに、対策が難しいことがままあります。それは色んな原因が考えられるからです。
    しばらくの間通信がない場合、ssh などのプロセスは、今も接続されているのか、それともなんらかの原因で接続断されているかを知るすべがありません。そこで、一定時間毎にあるパケットを送って接続断されていないか確かめることを heartbeat(心臓の鼓動)、それを用いて接続をし続けることを keep alive(生き続ける)と言います。
    んで、現実的な解決方法としては、Windows の場合は putty や teraterm といった heartbeat あるいは keep alive 機能を持ったターミナルソフトを使用するのが一番簡単かつ確実と私は思います。Mac のターミナルソフトにも同様のものがあるんじゃないかと想像しますが、Mosh を使用するのも一つの解決方法だと思います。

    ちなみに、Windows でも、putty + cygwin + mosh などの方法で Mosh を使うことは出来ますが、単独のターミナルソフトで Mosh が使える物は私の知る限り、まだリリースされていないと思います。

    ところで、Mosh すごいですよね。IP が変わろうが、スリープからの復帰であろうが再接続できちゃうし、ローカルエコーで動作がきびきびしているなど、機能的には ssh を超えていると思います。
    ただ、個人的にですが、実績ある ssh と比べて Mosh のセキュリティ的な部分は大丈夫?って不安はあります。Mosh の便利な機能は、万一セキュリティーホールがあった場合、簡単に他人に乗っ取られてしまわないのかなぁ?って事です。
    まぁ、便利さとセキュリティは多くの場合、相反することが多いですから、仕方ありませんが。

    ではでは

    返信
  3. 葛葉 キョウジ(管理人) 投稿作成者

    MoshはSSHを使っていないわけではなく、しっかりSSHを使って接続しているみたいです。
    SSHの機能拡張?のような感じなんですかね。

    セキュリティホールは無いとは言い切れないですけど、
    モバイル端末にインストールしておいてMoshで接続していたら、
    端末ごとどこかに忘れちゃった、
    みたいなことで乗っ取られちゃうことのほうが多い感じしますけどねw

    返信
    1. きんちゃん

      http://mosh.mit.edu/ によると

      Mosh は認証については ssh を使っているけど、実際の通信部分は State Synchronization Protocol という新しいプロトコルを設計し、Mosh はそれを使った最初のアプリケーションで、UDP 経由でパケットを送っていると書いてありますから、ssh の機能拡張では無いと思います。
      また、私の想像ですが、ssh の認証を使っているのは、ssh からの置き換え(後継)を本気で狙っているため、置き換えの容易さなどを優先しているだけだと思います。

      ただ、今年の 2012-02-06 に Initial release 0.9 がでて、現在、Ver 1.2 とまだ出来たてで湯気が立っています。:-)
      Mosh の機能は凄いなぁと思うし、テストするのは楽しいけど、本番機に使用するのは、大勢の人に使用されて揉まれて、もう少し枯れてから(1年後位?)にしようと言うのが、現段階における私の Mosh に対するセキュリティポリシーであるというだけでして、今の Mosh に問題があるという意味では決してありませんので、この点に関してはご理解下さい。

      ところで、くずのは様のおっしゃる通り、セキュリティホールなどの可能性より、 Mosh で接続した端末を置き忘れるほうがずっと確率高そうですね。iOS 版の Mosh が出たら、iPhone でも動くわけですから、更に確率が高まりそう。
      その場合、別端末で慌てて接続して、そのプロセスを殺すまでどうしようもないんだろうなぁ。。。。。
      やっぱり、便利さとセキュリティは相反する物のようで 🙂

      お騒がせして失礼しました。

      ではでは

      返信
      1. 葛葉 キョウジ(管理人) 投稿作成者

        SSHからの置き換えとはMITの学生達も野心的ですねw
        そうやってどんどん良くなっていくんでしょうけど。

        認証鍵を使わないのはiPhoneとかに入れていると、落とした時に怖いからなんですよね。
        気がついたらリモートからワイプすればいいんでしょうけど。

        便利なものは危険ですよねw

        返信
        1. きんちゃん

          お世話になります。きんちゃんです。

          1. パスワードだけの認証

          パスワードが盗まれる、あるいは解析されると任意の端末からログインされてしまう。
          万一、接続先のなりすましをされても分からない
          パスワードを知っていれば、任意の端末からログインできる。

          2. 公開鍵認証(パスフレーズ無し)

          秘密鍵が盗まれる(解析される危険はゼロではないけど無視)と、任意の端末からログインされてしまう。
          但し、接続先のなりすましされる危険性はパスワード認証に比べて遙かに低い。
          cron + rsync の自動バックアップなどに使用する事がある。
          秘密鍵がある端末からでないとログインできない。

          3. 公開鍵認証(パスフレーズ有り)

          2. に比べて秘密鍵が盗まれても、パスフレーズが最後の砦となる。
          接続先のなりすましについては 2. と同様。
          秘密鍵がある端末からでないとログインできない。

          ですから、セキュリティ的には

          3 > 2 > 1

          となります。

          私、個人としては、ssh を使用するなら、公開鍵認証(パスフレーズ有り)を使用するのが一番と考えており、私はそうしています。

          なお、私は定期的に公開鍵・秘密鍵のセットを交換しています。自己満足の要素が高いような気もするのですが、いくばくかはセキュリティ向上に寄与している信じています。:-)

          ちなみに、任意の端末からログインすることが多いのなら、ssh + ワンタイムパスワード認証のほうが現実的によい解決策かもしれません。

          ではでは

          返信
          1. 葛葉 キョウジ(管理人) 投稿作成者

            ああ、なるほど。
            認証鍵+パスワードで管理すれば余程のことがない限りハッキングされそうにないですね。

            それにしてもパスフレーズと認証鍵を定期的に入れ替えるとは、
            セキュリティ管理の鏡ですねw
            自分はどうも面倒くさくてやってません(-_-;)w

  4. ken

    葛葉様

    お世話になっております。
    本日も黙々と参考にさせていただきながら設定しております。
    本日はMoshの設定を行なっておりますが
    Moshインストール後に
    vi /etc/sysconfig/iptables
    で設定しようとしたところ
    その中身は空白でした。

    下記の行を
    -A FIREWALL -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
    の下にでも足す。

    -A FIREWALL -p udp -m udp –dport 60000:61000 -j ACCEPT

    この部分を実行するために何か作業が抜けているのでしょうか?

    ご迷惑おかけしますがご教示お願いします。

    返信
    1. 葛葉 キョウジ(管理人) 投稿作成者

      ファイアウォールの設定をしてないからだと思いますが。

      返信
      1. ken

        葛葉様

        ご連絡いただきありがとうございます。

        仰るとおりでした。お手数おかけし申し訳ございません。
        手順通りしてきたつもりでしたが抜かしていたようです。

        いつも本当にありがとうございます。

        返信

葛葉 キョウジ(管理人) へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)