CH-J Server Manager透過 SSH 管理伺服器
選單
所有指南與文章 →

如何同時管理多台 SSH 伺服器

透過 SSH 別名及並排終端機有條理地管理多台伺服器,避免在錯誤的伺服器上執行指令。

為每台伺服器取個清楚的名稱

一致的別名可節省時間並減少錯誤。在 ~/.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"
done

CH-J Server Manager 中的多伺服器管理

伺服器設定檔儲存在本機加密保管庫中,可同時開啟多個 SSH 工作階段。在 Alpha 0.1.1 中,兩個終端機可並排或上下排列,連線至同一台或兩台伺服器,隱藏終端機不會結束其工作階段。只有一條連線時,模組會自動使用它;有多條連線時則會詢問,因此模組絕不會自行切換到另一台伺服器。鎖定保管庫會中斷 SSH 工作階段,所以請先完成正在執行的工作,或讓它在 tmux 中繼續執行。

一眼掌握可用性

在 Alpha 0.1.1 中,可用性監視器會在背景透過與 SSH 連接埠建立 TCP 連線,檢查已儲存的伺服器,預設每 12 秒一次,無須登入。因此,離線表示無法從你所在的網路連上 SSH 連接埠;伺服器本身可能仍在運作。

詳細文件

OpenSSH: ssh_config →

生物辨識解除鎖定與安全性 →