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 →

生物识别解锁与安全 →