SSH config 使用指南:多台 Linux 服务器如何快速连接

举报
GGBondHere 发表于 2026/11/13 10:47:29 2026/11/13
【摘要】 介绍 SSH config 管理多台 Linux 云服务器的方法,包括设置服务器别名、登录用户、SSH 端口、私钥路径,以及通用参数、ProxyJump 跳板机和连接配置排查。

前言

管理多台 Linux 云服务器时,经常需要通过 SSH 远程连接。如果每台服务器的 IP、端口和登录用户都不一样,每次都手动输入完整命令会比较麻烦。

例如:

ssh -p 2222 -i ~/.ssh/id_ed25519 ubuntu@192.0.2.10

如果有多台服务器,就需要记住不同的地址和参数。

OpenSSH 提供了一个很实用的功能:SSH config。通过配置文件,可以给服务器设置别名,以后只需要执行 ssh 服务器别名 就能连接。

一、SSH config 文件在哪里?

OpenSSH 客户端通常会读取用户目录下的 SSH 配置文件。

Linux、macOS:

~/.ssh/config

Windows 自带 OpenSSH:

C:\Users\用户名\.ssh\config

需要注意,这里的 config 是文件名,没有 .txt 后缀。

在 Linux 中,如果目录不存在,可以先创建:

mkdir -p ~/.ssh

然后编辑配置文件:

nano ~/.ssh/config

Windows 可以使用记事本或 VS Code 编辑对应文件。

SSH config 是客户端配置,不需要修改服务器上的 sshd_config,也不需要因为增加服务器别名就重启 SSH 服务。

二、给服务器设置一个别名

假设有一台云服务器,连接信息如下:

  • IP 地址:192.0.2.10
  • 用户名:ubuntu
  • SSH 端口:2222
  • 私钥:~/.ssh/id_ed25519

其中 IP 是文档示例地址,实际使用时替换为自己的服务器地址。

可以在 config 中写入:

Host demo-hk
    HostName 192.0.2.10
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

每个字段的作用:

配置项 含义
Host 本地使用的服务器别名
HostName 真实的服务器域名或 IP
User SSH 登录用户名
Port SSH 服务监听端口
IdentityFile 用于认证的私钥文件

保存后,在终端执行:

ssh demo-hk

SSH 就会自动读取对应参数,不需要每次填写 IP、端口和私钥路径。

需要注意,Host 只是本地别名,并不是 DNS 记录。设置这个别名后,不会改变服务器的公网 IP 或域名解析。

三、管理多台服务器

如果有多台服务器,可以在同一个 config 文件中写入多个 Host 配置。

例如:

Host demo-hk
    HostName 192.0.2.10
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host demo-sg
    HostName 192.0.2.20
    User root
    Port 2200
    IdentityFile ~/.ssh/id_ed25519

Host demo-us
    HostName 192.0.2.30
    User debian
    Port 22
    IdentityFile ~/.ssh/id_ed25519

以后连接不同服务器,只需要:

ssh demo-hk
ssh demo-sg
ssh demo-us

相比每次输入完整 SSH 命令,这种方式更适合经常管理多台服务器的场景。

另外,如果某台服务器更换了公网 IP,只需要修改 HostName,不需要改变日常使用的连接命令。

四、多个服务器使用同一把私钥

如果几台服务器都授权了同一把公钥,可以让它们使用相同的 IdentityFile。

不过 SSH 客户端还可能从 ssh-agent 中获取其他私钥进行认证。

如果本地保存的密钥比较多,有时会遇到客户端尝试了多把无关密钥,最后服务器提示认证次数过多的问题。

可以增加:

IdentitiesOnly yes

例如:

Host demo-hk
    HostName 192.0.2.10
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

这样 SSH 会限制使用所配置的认证身份,而不是任意尝试 ssh-agent 提供的其他密钥。

需要注意,IdentitiesOnly yes 不会自动生成密钥,也不会将公钥上传到服务器。服务器仍然需要提前配置正确的公钥认证。

五、使用 Host * 设置通用参数

如果希望所有服务器使用一些相同的配置,可以使用通配符。

例如:

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

这里的配置表示客户端每隔约 30 秒,在连接空闲时向服务器发送一次 SSH 层的保活请求;如果连续多次没有收到响应,就可能断开连接。

这种方式可以帮助发现已经失去响应的 SSH 连接,但不能保证网络中断后自动恢复,也不能代替网络故障排查。

另外,SSH config 通常采用先匹配到的参数值优先的规则。

因此,建议将具体服务器的 Host 配置写在前面,通用的 Host * 放在后面。

例如:

Host demo-hk
    HostName 192.0.2.10
    User ubuntu
    Port 2222

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

这样方便后续为特定服务器单独调整参数。

六、通过跳板机连接内网服务器

有些服务器没有直接暴露 SSH 端口,只能先连接一台跳板机,再进入内网服务器。

OpenSSH 支持 ProxyJump,可以在 config 中提前指定跳板机。

例如:

Host bastion
    HostName 192.0.2.20
    User ubuntu
    Port 2222

Host internal
    HostName 10.0.0.10
    User ubuntu
    Port 22
    ProxyJump bastion

以后执行:

ssh internal

SSH 会先通过 bastion 建立连接,再通过跳板机转发到目标服务器。

需要注意,跳板机必须能够访问内网服务器的 SSH 端口,客户端也需要满足相关认证要求。

ProxyJump 只负责建立连接路径,并不会自动修改云服务器的安全组或防火墙。

如果跳板机与目标服务器使用不同的私钥,可以分别在各自的 Host 配置中指定 IdentityFile。

七、scp 和 sftp 也可以使用别名

SSH config 不只对 ssh 命令有效。

例如,将本地文件上传到服务器:

scp ./test.txt demo-hk:/tmp/

或者将远程文件下载到当前目录:

scp demo-hk:/tmp/test.txt ./

这里的 demo-hk 会使用前面配置的 HostName、User、Port 等参数。

如果需要交互式传输文件,也可以执行:

sftp demo-hk

这样不需要为不同服务器反复填写相同的连接信息。

八、如何检查配置是否生效?

配置完成后,如果连接仍然使用了错误的端口或用户,可以通过 SSH 自带的命令检查解析结果。

执行:

ssh -G demo-hk

它会显示 SSH 对这个目标最终解析出的配置,包括 hostname、user、port 等信息。

在 Linux 中,可以进一步过滤:

ssh -G demo-hk | grep -E '^(hostname|user|port|identityfile) '

如果使用 Windows PowerShell,可以写成:

ssh -G demo-hk | Select-String '^(hostname|user|port|identityfile) '

如果参数没有问题,但仍然无法连接,可以使用详细日志:

ssh -vv demo-hk

通过输出判断是 DNS 解析、TCP 连接还是密钥认证阶段出现了问题。

需要注意,ssh -G 只是输出客户端解析后的配置,不会真正连接服务器,也不能证明服务器已经开放对应端口。

九、几个容易忽略的问题

1. config 文件权限不正确

Linux 上的 SSH 用户配置文件应该只有当前用户可以修改。

可以设置:

chmod 600 ~/.ssh/config

Windows 则主要通过 NTFS 文件权限控制访问,不需要直接照搬 Linux 的 chmod 命令。

2. IdentityFile 不是公钥路径

IdentityFile 通常应该指向客户端的私钥文件。

例如:

IdentityFile ~/.ssh/id_ed25519

而不是:

IdentityFile ~/.ssh/id_ed25519.pub

带 .pub 的通常是公钥,不是用于客户端签名认证的私钥。

3. 不要为了连接方便关闭主机密钥检查

遇到 SSH 主机密钥提示时,应该核对服务器的密钥指纹。

不建议直接设置:

StrictHostKeyChecking no

来忽略所有相关警告。

特别是服务器更换 IP 或重装系统之后,应先确认变化是否符合预期,避免忽略潜在的连接安全问题。

4. 不要在 config 中保存密码

SSH config 用来管理连接参数,不应该直接保存服务器登录密码。

更合理的方式是使用 SSH 密钥认证,并妥善保护本地私钥。

总结

SSH config 非常适合经常管理多台 Linux 云服务器的场景。

最常用的配置项包括:

  • Host:服务器别名。
  • HostName:真实地址。
  • User:登录用户名。
  • Port:SSH 端口。
  • IdentityFile:私钥路径。
  • IdentitiesOnly:限制认证身份。
  • ProxyJump:通过跳板机连接。

配置完成后,可以用 ssh 别名 快速连接,也可以直接在 scp、sftp 中复用对应的连接参数。

遇到问题时,先通过 ssh -G 检查最终配置,再使用 ssh -vv 分析连接过程,通常比反复修改服务器 SSH 配置更高效。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。