ssh 检查known_hosts指纹的有效性

ssh 检查known_hosts指纹的有效性

我的一台 Debian 机器(全部使用或多或少较新版本的 OpenSSH)在 known_hosts 文件中获得了一些远程机器的指纹。这些远程机器不时会重新安装,因此它们会获得新的指纹。现在,当我尝试连接时,我收到了著名的“远程主机标识已更改”错误消息,而不是有效的连接。

我已经有一个可以修复这种情况的小脚本。但我的问题是如何以脚本方式自动检测它。

我现在想要实现的是其他脚本,在某个时间在后台运行,检测是否发生了“远程主机标识已更改”的情况。如果是,它应该启动我的修复脚本。

我已经有一些肮脏黑客的想法了。也许我可以解析错误消息的输出。或者我可以尝试使用和不使用主机验证,如果只有后者成功,则触发事件。但我想知道是否有更干净的方法来自动检测它。

有人对此有什么想法吗?完全关闭主机验证当然不是一个可行的选择。可能是我目前没有看到树木的森林……

答案1

这是一个非常简单的脚本。运行时,如果 ssh 密钥发生变化,它会打印名称服务器。文件服务器有 ip 或名称。

#!/bin/bash
rm new
while read server
do
        ssh-keyscan $server >> new  2> /dev/null
        diff new org 2> /dev/null | grep ">" | cut -d" " -f 2
        cp new org
done < servers

相关内容