我有一个 Chron 作业运行一个 bash 脚本,然后通过 SSH 连接到我的服务器。但我的服务器的IP地址会不时发生变化(我的bash脚本有一种查找新IP地址的方法)。但问题是,我的 bash 脚本收到“无法确定主机的真实性...”警告。我不想使用StrictHostKeyChecking=no
因为中间人攻击。然而:
如果RSA密钥与例如相同RSA密钥已经在known_host
文件中,或者RSA密钥我已经保存在其他MyServersPublicKey
文件中,然后我假设它是我的服务器并且它只是有一个新的IP。
警告本身显示指纹的RSA密钥来自“未知”主机,而不是RSA密钥本身。我想我可以节省RSA密钥 指纹我的主机,然后让我的 bash 脚本使用指纹从警告中并将其与已保存的进行比较指纹。但我想知道是否有人知道更简单的方法。
我是否必须为此编写自己的 bash 脚本,或者有什么可用的吗?
答案1
如注释中所述,创建证书(签名的主机密钥)将帮助您解决此问题(请参阅手册页ssh-keygen
,描述此过程的“证书”一章)。基本上,您将在服务器上创建一个 CA,签署主机密钥并将 CA 公钥存储在您的计算机中,known_hosts
例如:
@cert-authority * ssh-rsa AAAAB5W...
另一种可能性是编写一些 bash 脚本,它将在主机密钥前面添加您的 IP known_hosts
(如果您没有对该文件进行哈希处理)。类似的东西应该有效:
sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts