CH-J Server ManagerSSH によるサーバー管理
メニュー
すべてのガイドと記事 →

複数のSSHサーバーを同時に管理する方法

SSHのエイリアスと並べたターミナルで複数のサーバーを整理し、誤ったサーバーでのコマンド実行を防ぎます。

各サーバーに分かりやすい名前を付ける

一貫したエイリアスは時間の節約とミスの削減につながります。~/.ssh/configで、各サーバーのアドレス、ユーザー、ポート、鍵を1つの名前にまとめます。名前には役割と環境を含め、本番環境だと一目で分かるようにしてください。個別のホストに設定していないオプションには、Host *ブロックの設定が適用されます。

Host prod-web-1
    HostName 203.0.113.10
    User admin
    IdentityFile ~/.ssh/id_ed25519_prod
    IdentitiesOnly yes

Host test-web-1
    HostName 203.0.113.20
    User admin

サーバーの取り違えを防ぐ

複数のサーバーで作業していると、別のウィンドウにコマンドを入力しがちです。プロンプトにホスト名を表示し、本番環境ではプロンプトの色を変え、破壊的な操作の前に必ず接続先を確認してください。最も危険な手順は、ターミナルを1つだけ開いているときに行います。

hostname -f; whoami; pwd

長時間の作業を継続させる

接続が切れると、通常はシェルとその中で実行中のコマンドも終了します。長時間のジョブはサーバー上のtmuxやscreen内で実行すると、処理を継続でき、後から再接続できます。クライアントのkeepaliveは切れた接続を早く検出しますが、それだけではジョブの実行を維持できません。

tmux new -s upgrade
tmux attach -t upgrade

応答するサーバーを把握する

複数のサーバーで作業を始める前に、それぞれのSSHポートが応答するか確認します。ポートが閉じていても、サーバーが停止しているとは限りません。サービスが停止している場合や、ファイアウォールが利用中のネットワークからの通信を遮断している場合もあります。

for host in prod-web-1 test-web-1; do
    ssh -o ConnectTimeout=5 "$host" 'hostname; uptime' || echo "$host: no connection"
done

CH-J Server Managerで複数のサーバーを扱う

サーバープロファイルはローカルの暗号化された保管庫に保存され、複数のSSHセッションを同時に開けます。Alpha 0.1.1では、同じサーバーまたは2台のサーバーのターミナルを2つ、左右または上下に配置できます。ターミナルを非表示にしてもセッションは終了しません。接続が1つだけならモジュールは自動でそれを使い、複数ある場合は選択を求めるため、モジュールが勝手に別のサーバーへ切り替わることはありません。保管庫をロックするとSSHセッションが切断されるため、実行中の作業を先に終えるか、tmux内で継続させてください。

稼働状況を一目で確認する

Alpha 0.1.1の稼働監視は、保存済みサーバーのSSHポートにバックグラウンドでTCP接続し、ログインせずに確認します。既定の間隔は12秒です。ここでのオフラインは、利用中のネットワークからSSHポートに到達できないことを意味し、サーバー自体は動作している場合があります。

詳しいドキュメント

OpenSSH: ssh_config →

生体認証によるロック解除とセキュリティ →