こんにちは。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つ叩くだけです。このあたりも素晴らしいですね!
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%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.***.**
それではまた次回、お目にかかりましょう。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(408)
-
イベント(147)
-
カルチャー(35)
-
デザイン(13)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- DevSecOpsThon
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOデジキッズ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kids VALLEY
- MetaMask
- MySQL
- NFT
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- ゆめみらいワーク
- リモートワーク
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP