当您知道主机密钥已更改时,是否有一种简单的方法来更新 known_hosts 中的信息?

Sam*_*Sam 53 ssh key-authentication

如果主机的操作系统已经重新安装并重新生成了它的公钥,sshing 到它当然会失败,因为新密钥与旧密钥不匹配。

有没有更简单的方法来告诉 ssh 您知道主机的密钥已更改并且您希望它更新。我认为使用文本编辑器或 sed 之类的东西来删除有问题的行感觉有点容易出错。

jsb*_*ngs 80

用于ssh-keygen -R hostname从 known_hosts 文件中删除主机名(或 IP 地址)。下次连接时,新的主机密钥将添加到您的 known_hosts 文件中。


小智 20

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
Run Code Online (Sandbox Code Playgroud)

下次连接时,您将在没有被询问的情况下连接,Are you sure you want to continue connecting (yes/no)?因为密钥已经在known_hosts文件中。

  • 我会使用不同的变量名.... HOST 在某些 shell 中提供了您自己的主机名,所以我不想更改它(我知道可以然后退出,或者从子 shell 执行此操作,但仍然,为什么不改为`thehost`?或其他什么。ALLCAPS 变量可能会与保留的内部名称冲突。小写名称不应该。) (3认同)
  • (@DanielF+) 如果您使用散列格式并接受 `ssh` 中的密钥,则主机名及其地址有单独的条目,因此您应该使用 `ssh-keygen -R` _each_ 来避免冲突 (2认同)