為每台伺服器取個清楚的名稱
一致的別名可節省時間並減少錯誤。在 ~/.ssh/config 中,將每台伺服器的位址、使用者、連接埠及金鑰放在同一名稱下,並在名稱中包含角色與環境,讓正式環境一目了然。未針對特定主機設定的選項會採用 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避免操作錯誤的伺服器
同時操作多台伺服器時,很容易在錯誤的視窗中輸入指令。請在命令提示字元中顯示主機名稱,為正式環境使用不同的提示字元顏色,並在進行任何破壞性操作前確認目前所在的伺服器。最危險的步驟應留到只開啟一個終端機時執行。
hostname -f; whoami; pwd讓長時間工作持續執行
連線中斷通常會結束 shell 及其中執行的指令。在伺服器上的 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 中,兩個終端機可並排或上下排列,連線至同一台或兩台伺服器,隱藏終端機不會結束其工作階段。只有一條連線時,模組會自動使用它;有多條連線時則會詢問,因此模組絕不會自行切換到另一台伺服器。鎖定保管庫會中斷 SSH 工作階段,所以請先完成正在執行的工作,或讓它在 tmux 中繼續執行。
一眼掌握可用性
在 Alpha 0.1.1 中,可用性監視器會在背景透過與 SSH 連接埠建立 TCP 連線,檢查已儲存的伺服器,預設每 12 秒一次,無須登入。因此,離線表示無法從你所在的網路連上 SSH 連接埠;伺服器本身可能仍在運作。