使用动态DNS的动态IP SSH服务器能否配置为始终信任连接?
SSH动态域名连接主机密钥变更报错解决方案
不要全局关闭SSH主机密钥校验,会导致所有SSH连接暴露在中间人攻击风险下,仅针对你这台动态IP的单台主机做定向配置即可,以下提供两种可选方案,优先推荐安全性更高的第二种。
方案1:完全跳过该主机的密钥校验(配置最简单)
编辑本地SSH客户端配置文件(默认路径为~/.ssh/config),添加针对该动态域名的专属配置块:
Host ssh.myurl.com StrictHostKeyChecking no UserKnownHostsFile /dev/null LogLevel ERROR
参数说明:
StrictHostKeyChecking no:连接时不强制校验主机密钥与本地存储记录的匹配性,自动接受新的主机密钥,不会弹出交互阻断提示UserKnownHostsFile /dev/null:将该主机的密钥存储路径指向空设备,不保存任何该主机的历史密钥记录,从根源上避免「历史密钥与当前密钥不匹配」的报错LogLevel ERROR:屏蔽自动接受密钥时产生的警告级日志,避免每次连接输出冗余提示
方案2:钉扎服务器主机公钥(安全性更高,优先推荐)
如果不想完全放弃主机密钥校验能力,可以直接将服务器的固定SSH主机公钥写在本地配置中,校验逻辑直接和域名绑定、不关联IP,只要服务器本身没有更换SSH主机密钥(重装系统、重新生成SSH密钥才会变),单纯IP变动不会触发任何报错:
- 登录目标服务器,执行
cat /etc/ssh/ssh_host_ed25519_key.pub获取主机公钥(老版本系统如果使用RSA密钥,对应读取/etc/ssh/ssh_host_rsa_key.pub即可),复制输出的整行公钥内容 - 编辑本地
~/.ssh/config,添加对应配置块:Host ssh.myurl.com HostKeyAlias ssh.myurl.com # 下面替换为你实际复制的服务器主机公钥 HostKey ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxx替换为你自己的服务器公钥xxxxxx
该配置下依然保留主机密钥校验能力,只有服务器端真实更换了SSH主机密钥时才会触发告警,兼顾使用便利性和安全性。
ProxyJump参数的影响说明
你当前使用的ProxyJump参数不会对上述配置产生额外影响:
- 上述配置默认仅作用于最终连接的目标主机
ssh.myurl.com,跳板机的密钥校验逻辑完全独立,不受目标主机配置影响 - 如果你的跳板机同样使用动态IP,只需要给跳板机对应的Host配置块添加和目标主机一致的规则即可;如果跳板机是固定IP,保持默认的严格密钥校验规则即可,不会和目标主机的配置冲突。
内容的提问来源于stack exchange,提问作者eivindml
相关产品推荐
相关产品推荐

