![当您知道主机密钥已更改时,是否有一种简单的方法可以更新known_hosts中的信息?](https://linux22.com/image/879/%E5%BD%93%E6%82%A8%E7%9F%A5%E9%81%93%E4%B8%BB%E6%9C%BA%E5%AF%86%E9%92%A5%E5%B7%B2%E6%9B%B4%E6%94%B9%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A7%8D%E7%AE%80%E5%8D%95%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E6%9B%B4%E6%96%B0known_hosts%E4%B8%AD%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%9F.png)
如果主机的操作系统已重新安装并重新生成了公钥,则通过 sshing 到该主机的操作当然会失败,因为新密钥与旧密钥不匹配。
有没有更简单的方法告诉 ssh 您知道主机的密钥已更改并且您希望对其进行更新。我认为使用文本编辑器或 sed 之类的东西来删除有问题的行有点容易出错。
答案1
用于ssh-keygen -R hostname
从文件中删除主机名(或 IP 地址).ssh/known_hosts
。下次连接时,新的主机密钥将添加到您的.ssh/known_hosts
文件中。
答案2
TARGET_HOST=[hostname or IP]
# Remove the old key(s) from known_hosts
ssh-keygen -R $TARGET_HOST
# Add the new key(s) to known_hosts (and also hash the hostname/address)
ssh-keyscan -H $TARGET_HOST >> ~/.ssh/known_hosts
下次连接时,您将连接没有被询问,Are you sure you want to continue connecting (yes/no)?
因为密钥已经在known_hosts
文件中。