SSH 客户端 config 怎么写:主机别名、端口与跳板机

同一台电脑管理测试、生产和跳板服务器时,长串连接参数很难长期靠记忆维护。OpenSSH 客户端的 config 文件可以为每个目标保存清楚的别名。本文以连接 Ubuntu 24.04 服务器为例,客户端可使用 Windows OpenSSH、macOS 或 Linux;前提是已有可用账号和密钥,本篇不重复首次部署公钥。

文件放在客户端,别改到服务器配置

macOS 与 Linux 通常使用 ~/.ssh/config,Windows OpenSSH 通常使用用户目录下的 .ssh/config。这是发起连接的电脑上的文件,不是服务器的 sshd_config。先查看是否已有内容,备份后再增加独立的 Host 段,不要覆盖公司已有的跳板设置。

配置中填写实际地址和密钥路径,不写密码,也不把私钥内容嵌进去。以下地址 203.0.113.10203.0.113.20 只用于文档演示,不能作为真实目标。

用主机别名表达用途

在本机 config 中增加以下示例:

Host app-demo
    HostName 203.0.113.10
    User deploy
    Port 22
    IdentityFile ~/.ssh/app_demo_ed25519
    IdentitiesOnly yes

以后在本机执行 ssh app-demo,客户端会读取这组参数。Host 是本机使用的名称,HostName 才是实际目标;别名不需要配置公网 DNS。密钥文件必须已经存在并对应服务器授权,配置文件不会自动生成或上传它。

大多数参数使用首先获得的值,所以把精确的主机段放在宽泛的 Host * 默认段前面。某些参数可累积,尤其要核对多个身份文件是否被共同加载。OpenSSH 客户端配置手册给出了匹配顺序与各字段含义。

需要跳板时使用明确的两段配置

跳板机与目标机器可以使用不同账号和密钥。确认两段连接权限都已具备后,再给目标增加跳板:

Host jump-demo
    HostName 203.0.113.20
    User gateway
    IdentityFile ~/.ssh/jump_demo_ed25519
    IdentitiesOnly yes

Host private-demo
    HostName 10.10.0.8
    User deploy
    IdentityFile ~/.ssh/private_demo_ed25519
    IdentitiesOnly yes
    ProxyJump jump-demo

本机执行 ssh private-demo 时,经跳板建立到目标的连接。私钥仍保存在本机,不需要复制到跳板。不要为了让配置“更方便”对所有主机默认开启代理转发;它与跳板连接不是同一件事。跳板只解决可达路径,目标主机密钥仍需独立核对。ssh 命令手册说明了跳板与身份认证选项。

连接前先检查最终参数

配置合并错误时,先用不建立连接的方式查看最终结果:

# 本机终端,Windows 也可直接执行第一条
ssh -G app-demo
ssh -v app-demo

第一条输出实际采用的参数;第二条建立连接并打印调试过程。检查 hostname、user、port、identityfile 和 proxyjump,确认没有被宽泛规则抢先覆盖。分享调试内容前遮盖账号、内部地址和不宜公开的路径。

macOS/Linux 应让配置文件仅由本人写入,例如检查其归属后设置 chmod 600 ~/.ssh/config。Windows 则检查用户文件权限,不套用 Linux 的 chmod 命令。文件权限过宽可能让客户端拒绝使用配置,处理时应修正具体文件,不能放开整个用户目录。

失败时恢复到可比较的连接方式

配置修改后连接失败,可先恢复备份,或用单独的临时配置文件通过 ssh -F 文件路径 测试。不要同时修改客户端设置、服务器认证和防火墙,否则很难知道问题从哪一步开始。

如果不用别名的原连接命令正常,优先比较参数合并;如果两种方式都失败,再参考SSH 连接排查。日常命名建议带上环境用途,让生产与测试容易区分。维护的目标是降低误操作,而不是把所有复杂连接都隐藏到一个看不懂的别名后面。

参考资料

继续阅读

返回天理云文章中心

分享到:
上一篇
sudo 最小权限配置:为运维账号授予必要权限
下一篇
多台服务器的 SSH 密钥如何管理:分配、轮换与撤销
服务中心
企微客服
企微客服
给您高效服务
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意