こんにちは。GMOインターネットの斉藤です。今回はLinuxサーバー管理のときに便利に使えるmoshとそれをConoHaで使うコツをご紹介します。
はじめに
ConoHaなどのVPSはもちろん、リモートでLinuxサーバーを管理するときによく使われるのはsshではないかと思います。私ももちろんsshは使うのですが、自分で頻繁に使うサーバーについてはmoshを使っています。
MoshはThe mobile shellの略で、sshの置き換えを目指して開発されているソフトウェアで、sshの機能に加えてさまざまな便利機能が追加されています。
Mosh: the mobile shellhttps://mosh.org/
私はとくにコネクションの自動再接続が気に入って使っています。
moshには接続が切れても自動で再接続してくれる機能があります。ラップトップを閉じてスリープにして、再度開いたときにすでにリモートサーバーへ繋がっている状態になるのです。この間に場所を移動してIPアドレスが変わっても問題ありません。
今でこそステイホームな状況ではありますが、それでもカフェとかでちょっとサーバーのログを見たいこともありますからね(ありますよね?) 。そんなときに非常に有用です。
私はこのmoshの再接続機能とtmuxのセッション管理を併せて使っていて、場所は環境に依存せず、またラップトップの再起動などでも作業環境が保存されるようにしています。
ほかにも優れたローカルエコーはWi-Fiの電波が微妙なところでイライラせずにすみますし、sshと認証メソッドを共有しているので安心して使えるところもメリットでしょうか。
インストールも簡単です。多くのプラットフォームでコマンド1つ叩くだけです。このあたりも素晴らしいですね!
https://mosh.org/#getting
ConoHaで安全にmoshを使う
さてConoHaには「接続許可ポート」という機能があって、コントロールパネルからVPSへのポート制限することができます。
この設定を「すべて許可」で運用しても問題はありませんが、一般的には使うポートだけを許可するのが良いとされています。サーバー上で意図しないプログラムが動いていた場合などでも、外部からの通信を遮断できるからです。
moshの実際の挙動は、まずsshでサーバーに接続を行い、認証が完了した後にサーバー上でmosh-serverと言うコマンドが実行されてクライアントとの接続が確立します。なので、moshは単体では使えません。必ずsshとセットで使うことになります。
sshは22/tcpを使いますが、moshはそれに加えて60000-61000/udpを使います。上記のスクリーンショットのように、コントロールパネルからsshのポートだけを許可しても、udpを使うmoshは使うことができません。とは言っても「すべて許可」での運用は避けたいものです。
ConoHaにはセキュリティグループと言う機能があって、接続元のIPアドレスやポート番号を使ってパケットフィルタリングを行えます。前述の「接続許可ポート」もこのセキュリティグループを使って実装されています。なので、moshを使うにはセキュリティグループを使って60000-61000/udpを許可してあげればよいのです。
本来セキュリティグループはConoHa APIを使って作業するのですが、結構大変です。なのでここでは拙作のconoha-netというCLIツールを使ってみましょう。簡単に操作できます。
conoha-netやセキュリティグループの仕組みは上の記事で解説しているので興味のある方はご覧ください。ここでは手順のみをご紹介します。
①conoha-netのインストール
これはLinux向けですが、OSXやWindowsのインストール方法もREADME.mdにあります。
curl -sL https://github.com/hironobu-s/conoha-net/releases/download/current/conoha-net-linux.amd64.gz | zcat > conoha-net && chmod +x ./conoha-net
②環境変数の設定
APIの設定については下記URLを参考にしてください。
https://github.com/hironobu-s/conoha-net#1-%E8%AA%8D%E8%A8%BCexport OS_USERNAME="gncu*****"export OS_PASSWORD="********"export OS_AUTH_URL="https://identity.tyo1.conoha.io/v2.0"export OS_TENANT_ID="*******************************"
③VPS一覧を見てみる
./conoha-net listNameTag IPv4 IPv6 SecurityGroupsmy-vps 150.95.***.** 2400:8500:1302:829:***:***:***:*** gncs-ipv6-all, gncs-ipv4-all, default
④moshを通すためのルールを格納するセキュリティグループ(permit-mosh)を作る
./conoha-net create-group permit-mosh
⑤60000-61000/udpを許可するルールをpermit-moshに追加する
./conoha-net create-rule -p 60000-61000 -P udp permit-mosh
⑥permit-moshをVPS(my-vps)にアタッチする
./conoha-net attach -n my-vps permit-mosh
⑦正しく設定されたか確認
permit-moshが追加されていればOK。
./conoha-net listNameT IPv4 IPv6 SecurityGroupsmy-vps 150.95.***.** 2400:8500:1302:829:***:***:***:*** gncs-ipv6-all, permit-mosh, gncs-ipv4-all, default
これでmoshがつながるはずです。
mosh 150.95.***.**
それではまた次回、お目にかかりましょう。