ConoHaで安全にmoshを使おう

こんにちは。GMOインターネットの斉藤です。今回はLinuxサーバー管理のときに便利に使えるmoshとそれをConoHaで使うコツをご紹介します。

はじめに

ConoHaなどのVPSはもちろん、リモートでLinuxサーバーを管理するときによく使われるのはsshではないかと思います。私ももちろんsshは使うのですが、自分で頻繁に使うサーバーについてはmoshを使っています。

MoshはThe mobile shellの略で、sshの置き換えを目指して開発されているソフトウェアで、sshの機能に加えてさまざまな便利機能が追加されています。

Mosh: the mobile shell
https://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でセキュリティグループを設定するhttps://qiita.com/hironobu_s/items/1bb6a8886ae91bb553c9

本来セキュリティグループは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%BC
export OS_USERNAME="gncu*****"
export OS_PASSWORD="********"
export OS_AUTH_URL="https://identity.tyo1.conoha.io/v2.0"
export OS_TENANT_ID="*******************************"

③VPS一覧を見てみる

./conoha-net list

NameTag IPv4 IPv6 SecurityGroups
my-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 list

NameT IPv4 IPv6 SecurityGroups
my-vps 150.95.***.** 2400:8500:1302:829:***:***:***:*** gncs-ipv6-all, permit-mosh, gncs-ipv4-all, default

これでmoshがつながるはずです。

mosh 150.95.***.**

それではまた次回、お目にかかりましょう。

ブログの著者欄

斉藤 弘信

GMOインターネット株式会社

2000年に同社に入社。ユーザーサポートやデータセンターでのオペレーション業務等を担当し,その後社長室などのゼネラル部門を経て,2014年9月よりクラウド/ホスティング事業のテクニカルエバンジェリストを担当。現在はWebプロモーション研究室のソフトウェアエンジニアとして勤務。得意分野はWebアプリケーションの設計/開発,Linuxサーバー構築/運用。

関連記事