Я установил экземпляр 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Ответ хорош как разовое разрешение.
Но если вы часто:
..без использования эластичных 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-адрес экземпляра.