У меня есть сценарий, который динамически создает экземпляры Amazon EC2 и добавляет их ключ ssh в мои ~ / .ssh / known_hosts. Однако всякий раз, когда мне нужно обновить экземпляр, прервав и воссоздав его, я получаю неприятные предупреждающие сообщения, например:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
<fingerprint>.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in ~/.ssh/known_hosts:94
remove with: ssh-keygen -f "~/.ssh/known_hosts" -R <hostname>
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Предупреждение понятно, но даже если я запустил эту команду, чтобы удалить старый ключ, вход в систему все равно выдает предупреждение:
Warning: Permanently added '<hostname>' (ECDSA) to the list of known hosts.
Warning: the ECDSA host key for '<hostname>' differs from the key for the IP address '<ip>'
Offending key for IP in ~/.ssh/known_hosts:96
Решение состоит в том, чтобы вручную удалить эту строку в моем known_hosts
, но есть ли способ автоматизировать это, предварительно выполнив одну команду?
Из man ssh-keygen
(SSH-KEYGEN (1))
-R hostname Removes all keys belonging to hostname from a known_hosts file. This option is useful to delete hashed hosts (see the -H option above).
Попробуй это:
ssh-keygen -R hostname [-f known_hosts_file]