Tidak dapat terhubung ke instance AWS EC2 - “Verifikasi kunci host gagal”

13

Saya telah membuat instance Ubuntu dengan paket Rails, menyebarkan aplikasi saya, dan itu berfungsi dengan baik.

Tapi ketika saya mencoba untuk melakukan SSH, itu tidak memungkinkan saya untuk remote login dan melempar kesalahan seperti: Host key verification failed.

Masalahnya tampaknya persisten. Saya telah melampirkan IP Elastis ke instance itu dan saya tidak dapat melihat DNS publik.

Contoh saya sedang berjalan di wilayah Singapura.

ssh hasil debug:

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.
Jeevan Dongre
sumber
Anda harus memberi tahu kami kesalahan aktual sebenarnya yang Anda dapatkan. Memberitahu kami seperti apa salah satu kesalahan itu tidak membantu.
David Schwartz

Jawaban:

19

Saat Anda terhubung ke server ssh, klien ssh Anda menyimpan daftar host tepercaya sebagai pasangan nilai kunci dari IP dan server sidik jari ssh. Dengan EC2 Anda sering menggunakan kembali IP yang sama dengan beberapa instance server yang menyebabkan konflik.

Jika Anda telah terhubung ke instance EC2 sebelumnya dengan IP ini, dan sekarang terhubung ke instance baru dengan IP yang sama komputer Anda akan mengeluh tentang "Verifikasi host gagal" karena pasangan yang disimpan sebelumnya tidak lagi cocok dengan pasangan baru.

Pesan kesalahan memberi tahu Anda cara memperbaikinya:

Kunci RSA yang menyinggung di /home/ubuntu/.ssh/known_hosts:1
hapus dengan: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternatif cukup buka /home/ubuntu/.ssh/known_hosts dan hapus baris 1 (seperti yang ditunjukkan oleh ": 1").

Anda sekarang dapat terhubung dan menerima verifikasi host baru.

Harap perhatikan biasanya file s_'s known_hosts biasanya telah menyimpan pasangan baris kedua untuk nilai hostname atau ip6 sehingga Anda mungkin perlu menghapus beberapa baris.

Peringatan: Verifikasi host penting dan merupakan alasan bagus mengapa Anda mendapatkan peringatan ini. Pastikan Anda mengharapkan verifikasi host gagal. Jangan hapus pasangan nilai kunci verifikasi jika tidak yakin.

tebal
sumber
Saya melakukan itu. Sekarang saya mendapatkan kesalahan ini: Izin ditolak (publickey). Tahu cara mengatasi ini, karena file kunci publik cukup baik terakhir kali saya mengakses server AWS saya.
Najeeb
11

@flurdy jawaban bagus sebagai resolusi satu kali.

Tetapi jika Anda sering:

  • luncurkan instance EC2 baru,
  • mulai dan hentikan instance EC2,

..without menggunakan Elastic IPs (terpasang secara permanen ke server Anda) maka Anda berurusan dengan baru / mengubah IP / hostname dari instance Anda sepanjang waktu .

Jika demikian maka Anda mungkin ingin menghentikan pemeriksaan SSH secara permanen dan menyimpan sidik jari server untuk nama host publik EC2 .


Untuk melakukannya cukup tambahkan ini ke ~/.ssh/config:

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


Harap dicatat bahwa SSH masih akan mengatakan Warning: Permanently added (...) to the list of known hosts.ketika menghubungkan tetapi hanya berarti telah menambahkannya ke /dev/null...

Namun SSH akan berhenti bertanya apakah Anda confirm the authenticity of hostdan terus terhubung.

Jadi lebih nyaman dan Anda mungkin menghindari tidak selalu cukup kesalahan koneksi SSH saat menggunakan instance EC2 Anda.


Saya harus menambahkan bahwa secara teori pengaturan ini menurunkan keamanan koneksi SSH Anda, tetapi dalam kehidupan nyata Anda mungkin tidak akan memeriksa sidik jari dari contoh EC2 satu kali Anda.

Greg Dubicki
sumber