酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Mosh Mobile SSH - モバイル用に自動再接続してくれるSSH

Mosh』はモバイル回線など通信が不安定なときにも、SSHをかなり快適にしてくれるアプリです。移動が多い人や、スリープから復旧したときにターミナルの接続が再開されるようにしたい場合などに超オススメです!

アルバイトを10秒で探せるiPhone/Androidアプリ Short.Works」の開発にもめっちゃ役に立っています!


Moshとは

Moshはモバイル回線など回線が不安定なときにも、快適にSSHができるツールです。

* IPアドレスが変更されても接続が継続する
* サーバー接続途中でPCをスリープモード => 復帰でも自動で再開
* SSHの設定(~/.ssh/config)をそのまま使える

などいたれりつくせりなツールです!

Moshのインストール

Mac側のインストールはこちら。

1
brew install mobile-shell

CentOSへのインストールはこちら。

1
yum install mosh

Ubuntuへのインストールはこちら。

1
2
3
sudo add-apt-repository ppa:keithw/mosh
sudo apt-get update
sudo apt-get install mosh

UDPのポート解放

Moshを使う場合はUDPのポート60000-61000を解放しておく必要があります。 (実際には1セッションごとに1ポート使うので最大同時接続数が10セッションで足りるなら10個でいいそう)

AWSの場合はセキュリティグループの設定を変更。

iptablesを変更する場合は、

1
2
3
4
5
# centos(redhat系)
vi /etc/sysconfig/iptables

# ubuntu
vi /network/if-pre-up.d/iptables

として、以下を追加。

1
-A RH-Firewall-1-INPUT -p udp -m udp --dport 60000:61000 -j ACCEPT

その後に、sudo /etc/init.d/iptables restartでiptablesを再起動。

接続方法

まずはいつもどおり、~/.ssh/configにこんなかんじでサーバ設定。 (SERVER_NAME, SERVER_IP, PORT_NUMBER, SSH_KEY_PATH, USER_NAMEは自分の接続先似あわせて変更)

1
2
3
4
5
Host SERVER_NAME
  Hostname SERVER_IP
  port PORT_NUMBER
  IdentityFile ~/.ssh/vps_rsa(SSH_KEY_PATH)
  User USER_NAME

完了したら、以下のコマンドを実行すればsshとほぼ同じように接続できます!

1
mosh SERVER_NAME

ライフハック!

おまけ: Moshのコネクションをクローズする

サーバーで以下のコマンドを実行するとMoshのコネクションをクローズできます!

1
kill `pidof mosh-server`

参考: ssh - How do I reattach to a detached mosh session? - Stack Overflow

Special Thanks

Sakura VPSにmoshで接続するための設定

moshを使ってリモート接続する

SSHの代わりになるかもしれない「Mosh」を使ってみました

Ubuntu と Mac に mosh 入れてみた

おすすめの書籍