各サーバーに分かりやすい名前を付ける
一貫したエイリアスは時間の節約とミスの削減につながります。~/.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"
doneCH-J Server Managerで複数のサーバーを扱う
サーバープロファイルはローカルの暗号化された保管庫に保存され、複数のSSHセッションを同時に開けます。Alpha 0.1.1では、同じサーバーまたは2台のサーバーのターミナルを2つ、左右または上下に配置できます。ターミナルを非表示にしてもセッションは終了しません。接続が1つだけならモジュールは自動でそれを使い、複数ある場合は選択を求めるため、モジュールが勝手に別のサーバーへ切り替わることはありません。保管庫をロックするとSSHセッションが切断されるため、実行中の作業を先に終えるか、tmux内で継続させてください。
稼働状況を一目で確認する
Alpha 0.1.1の稼働監視は、保存済みサーバーのSSHポートにバックグラウンドでTCP接続し、ログインせずに確認します。既定の間隔は12秒です。ここでのオフラインは、利用中のネットワークからSSHポートに到達できないことを意味し、サーバー自体は動作している場合があります。