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

13

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

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

Проблема кажется постоянной. Я подключил Elastic 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.
Дживан Донгре
источник
Вы должны сообщить нам точные фактические ошибки, которые вы получили. Рассказать нам, на что была похожа одна из ошибок, бесполезно.
Дэвид Шварц

Ответы:

19

Когда вы подключаетесь к 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»).

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

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

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

flurdy
источник
Я это сделал. Теперь я получаю эту ошибку: Отказано в доступе (publickey). Любая идея, как решить эту проблему, потому что файл открытого ключа был достаточно хорош, когда я в последний раз обращался к своему серверу AWS.
Наджиб
11

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

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

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

..without с помощью Elastic 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.

Грег Дубицки
источник