直接修改 ~/.ssh/config 可实现 SSH 别名登录,需确保文件权限为 600、Host 定义正确(非 IP 直写)、HostName 指向真实地址,并配置 User/Port/IdentityFile/ProxyJump 等参数以支持复杂连接。

直接改 ~/.ssh/config 就能用别名登录,不用记 IP、端口、用户名,也不用每次敲一堆参数。
别名定义必须写在 ~/.ssh/config 里
SSH 客户端只认这个路径下的配置文件,其他地方写的别名(比如只在 .bashrc 里加 alias)属于 shell 层面的快捷方式,不参与 SSH 连接逻辑,没法自动加载密钥、端口或跳转设置。
-
~/.ssh/config不存在就手动创建,权限必须是600(chmod 600 ~/.ssh/config),否则 SSH 会拒绝读取 - 每组配置以
Host开头,后面跟的不是命令而是「匹配模式」——支持通配符(如Host dev*),但别名本身不能含空格、下划线或特殊符号,推荐用短横线(prod-api)或纯字母数字(web01) -
HostName必须写真实地址,可以是域名、IP,甚至另一个已定义的 Host 别名(用于嵌套跳转)
Host 和 HostName 别搞混
Host 是你本地敲的命令名,HostName 是它实际连的目标。很多人写成 Host 192.168.1.100,结果发现 ssh 192.168.1.100 还是走默认配置——因为 SSH 匹配时优先按字面量匹配,而 192.168.1.100 已被当作 IP 直连处理,绕过了 config 规则。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 正确写法:
Host mydb→HostName 192.168.1.100→ 然后运行ssh mydb - 如果非要让 IP 地址触发别名,得用通配:
Host 192.168.1.*,但这样风险高,容易误匹配 -
User不写的话默认用当前登录用户名,但生产环境建议显式指定,避免因本地用户名变更导致连错账号
带跳转、密钥、端口的别名怎么写
复杂连接场景下,光靠 Host/HostName 不够,得补全关键字段。漏掉 IdentityFile 或 ProxyJump 会导致认证失败或连不上中间跳板机。
- 普通带端口和密钥:
Host staging→HostName 10.0.2.5→User deploy→Port 2222→IdentityFile ~/.ssh/staging_key - 通过跳板机(bastion):
Host app-server→HostName 10.0.3.10→User app→ProxyJump bastion→ 注意bastion也得在 config 里提前定义好 - 禁用密码登录强制走密钥:
IdentitiesOnly yes,防止 SSH 尝试用密码 fallback,提升安全性也避免卡在交互提示
别名不生效?先检查这三件事
最常踩的坑不是语法错,而是环境或权限问题。别急着重写 config,先快速验证基础条件。
- 运行
ssh -F ~/.ssh/config -v myalias,看 debug 输出里是否出现Reading configuration data ~/.ssh/config—— 没这句说明根本没读到文件 - 执行
ls -l ~/.ssh/config,确认权限是-rw-------,否则 SSH 会静默忽略 - 别名大小写敏感,且
Host行末不能有空格或注释,Host prod # production server这种写法会让整段配置失效
别名本身不解决密钥权限或网络连通性问题,它只是把一堆参数打包成一个名字。真正卡住的时候,往往不是 config 写得不对,而是私钥路径错了、跳板机连不通、或者目标服务器的 sshd_config 关了公钥认证。

















