Не вдається підключитися до екземпляра 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 зазвичай зберігається пара другого рядка для імені хоста або значення ip6, тому вам може знадобитися видалити пару рядків.

Попередження: перевірка хоста важлива, і це є вагомою причиною, чому ви отримуєте це попередження. Переконайтеся, що ви очікуєте невдалого підтвердження хоста. Не видаляйте пару підтвердження ключ-значення, якщо не визначено.


Я це зробив. Тепер я отримую цю помилку: у дозволі відмовлено (publickey). Будь-яка ідея, як це вирішити, тому що файл відкритого ключа був досить хорошим, коли я останній раз звертався до свого сервера AWS.
Najeeb

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.