スリープとかで ssh 接続が切れてしまうのが面倒なので mosh を導入

ターミナルで ssh 接続をしていて、ノートPCを閉じてスリープ。再びPCを開いて作業を再開しようとすると、 ssh 接続は

client_loop: send disconnect: Connection reset by peer

ってな感じで、切断されてしまっている。一々ログインし直すのがいい加減、面倒なので、mosh を導入してみた。公式サイトは

https://mosh.org/

mosh は「mobile shell」の略らしい。

ってことで、まず手元の Windows 機。ありがたいことに Cygwin にパッケージが用意されているので、普通に setup-x86_64.exe (64ビット版) からインストールする。

Cgywin setup mosh

それでリモートサーバは ubuntu なので、

$ sudo apt-get install mosh

でインストール。それでUDPの60000~61000番のポートを使うということなので、

$ sudo ufw allow 60000:61000/udp

で開放してやる。

設定はこれだけでオーケー。ssh の .ssh/config に記載した設定がそのまま使用できるので、例えば

$ mosh server01

としてやれば、 .ssh/config に server01 として登録しておいたリモートサーバにログインできる。これでノート PC を閉じても、そのまま接続が維持されている。

また、リモートサーバで例えば

$ sass library/scss/style.scss:library/css/style.css --watch

などとして scss ファイルの更新を監視しておいても、接続が維持され、監視状態もそのまま維持される。うーん便利だ。

ただ、 mosh ターミナル自体や PC 自体をそのまま落してしまうと、リモートサーバ側の mosh-server のプロセスがそのまま残ってしまう。そのときは再度ログインすると

Mosh: You have 2 detached Mosh sessions on this server

というようにプロセスが残っていることを教えてくれる。このプロセスを再利用するのはできないようなので、

$ kill 1425

などと個別に kill してやる。もしくは

$ kill `pidof mosh-server`

としてやればすべての mosh-server のプロセスを kill することができる。なおそのとき mosh でログインしたプロセスも kill されるので、ログアウトされるので注意。

なにか特別な設定とか要るんかなと思ってたけど、上記のようにせいぜいポートの開放だけなので、導入は簡単。これならもっと早く導入すればよかった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です