ssh禁用REMOTE HOST IDENTIFICATION HAS CHANGED警告

SSH采用Trust On First Use方式避免中间人攻击ssh第一次连接新主机是会出现主机公钥指纹确认提示:

ssh首次连接主机指纹提示ssh首次连接主机指纹提示
ssh首次连接主机指纹提示

输入yes保存主机公钥后,以后连接无需再次确认。如果主机公钥改变(例如重装了系统,服务端重新生成公钥)或者受到中间人攻击,连接时主机公钥会校验不通过,出现REMOTE HOST IDENTIFICATION HAS CHANGED警告:

ssh REMOTE HOST IDENTIFICATION HAS CHANGED警告ssh REMOTE HOST IDENTIFICATION HAS CHANGED警告
ssh REMOTE HOST IDENTIFICATION HAS CHANGED警告

主机公钥校验是防止SSH协议受到中间人攻击的重要安全保障,但在某些场合则很烦人。例如天河二号一个登录IP对应多个登录节点,每次会随机选择一个节点登录,因此连接时会频繁提示主机公钥改变警告。

常规解决办法是编辑 ~/.ssh/known_hosts 文件,把之前保存的key删除。或者用 ssh-keygen -R IP 清除公钥信息。但对于天河二号的场景,这两种方法同样很麻烦。

终极解决办法是禁用SSH主机公钥校验。幸运的是SSH有支持不校验主机key的选项,只需在 ~/.ssh/config 文件中对特定主机配置StrictHostKeyCheckingUserKnowHostsFile两个选项即可:

Host tianhe2
    User xxxx
    Port xxxx
    IdentityFile ~/buaa_liutg_1.id
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

写在配置文件里省心,如果你不嫌麻烦,可以在ssh连接时以选项方式设置:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p端口 用户名@主机IP

不管写配置文件还是选项传递参数,今后使用都不会再出现主机公钥改变的警告,太棒了!

注意:非特殊情形请不要使用这两个参数,可能会带来严重的安全风险!

留言评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注