Назад | Перейти на главную страницу

Невозможно подключиться к экземпляру AWS EC2 - «Ошибка проверки ключа хоста»

Я установил экземпляр Ubuntu с пакетом Rails, развернул приложение, и оно работает нормально.

Но когда я пытаюсь использовать SSH, это не позволяет мне удаленный вход в систему и выдает такие ошибки, как: Host key verification failed.

Проблема кажется постоянной. Я прикрепил эластичный IP-адрес к этому экземпляру, и я не могу видеть общедоступный DNS.

Мой экземпляр работает в регионе Сингапур.

ssh вывод отладки:

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 46.137.253.231 [46.137.253.231] port 22.
debug1: Connection established.
debug1: identity file st.pem type -1
debug1: identity file st.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu6
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 RSA key sent by the remote host is.
Please contact your system administrator.
Add correct host key in /home/ubuntu/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/ubuntu/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231
RSA host key for 46.137.253.231 has changed and you have requested strict checking.
Host key verification failed.

Когда вы подключаетесь к ssh-серверу, ваш ssh-клиент сохраняет список доверенных хостов в виде пар ключ-значение IP и отпечатков пальцев ssh-сервера. С ec2 вы часто повторно используете один и тот же IP-адрес с несколькими экземплярами сервера, что вызывает конфликт.

Если вы подключились к более раннему экземпляру ec2 с этим IP-адресом, а теперь подключаетесь к новому экземпляру с тем же IP-адресом, ваш компьютер будет жаловаться на «Ошибка проверки хоста», поскольку его ранее сохраненная пара больше не соответствует новой паре.

В сообщении об ошибке указано, как это исправить:

Нарушение ключа RSA в /home/ubuntu/.ssh/known_hosts:1
удалить с помощью: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

В качестве альтернативы просто откройте /home/ubuntu/.ssh/known_hosts и удалите строку 1 (как обозначено ": 1").

Теперь вы можете подключиться и получить подтверждение нового хоста.

Обратите внимание, что обычно файл known_hosts ssh обычно хранит вторую пару строк для имени хоста или значения ip6, поэтому вам может потребоваться удалить пару строк.

Предупреждение: проверка хоста важна, и это хорошая причина, по которой вы получаете это предупреждение. Убедитесь, что вы ожидаете неудачной проверки хоста. Не удаляйте проверочную пару "ключ-значение", если не уверены.

@flurdyОтвет хорош как разовое разрешение.

Но если вы часто:

  • запускать новые инстансы EC2,
  • запускать и останавливать экземпляры EC2,

..без использования эластичных IP-адресов (постоянно прикрепленных к вашим серверам) вы имеете дело с новыми / изменяющимися IP-адресами / именами хостов ваших экземпляров все время.

Если да, то вы можете захотеть навсегда прекратить проверку SSH и сохранение отпечатков сервера для общедоступных имен хостов EC2.


Для этого просто добавьте это в свой ~/.ssh/config:

# AWS EC2 public hostnames (changing IPs)
Host *.compute.amazonaws.com 
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null


Обратите внимание, что SSH по-прежнему будет говорить Warning: Permanently added (...) to the list of known hosts. при подключении, но просто означает, что он добавил его в /dev/null...

Однако SSH перестанет спрашивать, confirm the authenticity of host и просто продолжайте подключаться.

Так удобнее, и вы можете избежать не всегда достаточно подробные ошибки подключения SSH при использовании ваших экземпляров EC2.


Я должен добавить, что теоретически этот параметр снижает безопасность ваших SSH-соединений, но в реальной жизни вы, вероятно, все равно не будете проверять отпечатки пальцев своих разовых экземпляров EC2.

Выше объясненные ответы в порядке. Но я предпочитаю эту команду для решения этой проблемы.

ssh-keygen -R IPADDRESS

Здесь IPADDRESS -> IP-адрес экземпляра.