ไม่สามารถเชื่อมต่อกับอินสแตนซ์ AWS EC2 - "การยืนยันคีย์โฮสต์ล้มเหลว"


13

ฉันตั้งค่าอินสแตนซ์อูบุนตูด้วยแพ็คเกจ Rails ติดตั้งแอพของฉันและมันใช้งานได้ดี

แต่เมื่อฉันพยายามที่จะทำ SSH Host key verification failedก็ไม่ได้ช่วยให้ผมสำหรับการเข้าสู่ระบบจากระยะไกลและโยนข้อผิดพลาดเช่น:

ปัญหาดูเหมือนจะคงอยู่ ฉันได้แนบยืดหยุ่น IP กับอินสแตนซ์นั้นและฉันไม่สามารถดู DNS สาธารณะ

อินสแตนซ์ของฉันทำงานในภูมิภาคสิงคโปร์

ssh debug output:

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.

คุณต้องบอกให้เราทราบถึงข้อผิดพลาดที่แท้จริงที่คุณได้รับ แจ้งให้เราทราบว่าข้อผิดพลาดอย่างใดอย่างหนึ่งนั้นไม่เป็นประโยชน์
David Schwartz

คำตอบ:


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 ของ ssh จะมีการจัดเก็บคู่สายที่สองสำหรับชื่อโฮสต์หรือค่า ip6 ดังนั้นคุณอาจต้องลบสองบรรทัด

คำเตือน: การยืนยันโฮสต์เป็นสิ่งสำคัญและเป็นเหตุผลที่ดีว่าทำไมคุณถึงได้รับคำเตือนนี้ ตรวจสอบให้แน่ใจว่าคุณคาดหวังว่าการยืนยันโฮสต์จะล้มเหลว อย่าลบคู่ของคีย์ - ค่าการตรวจสอบหากไม่แน่ใจ


ฉันทำอย่างนั้น. ตอนนี้ฉันได้รับข้อผิดพลาด: การอนุญาตถูกปฏิเสธ (publickey) ความคิดใด ๆ วิธีแก้ไขปัญหานี้เนื่องจากไฟล์กุญแจสาธารณะดีพอครั้งสุดท้ายที่ฉันเข้าถึงเซิร์ฟเวอร์ AWS ของฉัน
Najeeb

11

คำตอบของ@flurdyนั้นดีเหมือนการแก้ปัญหาแบบครั้งเดียว

แต่ถ้าคุณมักจะ:

  • เปิดตัวอินสแตนซ์ EC2 ใหม่
  • สตาร์ทและหยุดอินสแตนซ์ EC2

..without ใช้ 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 แบบครั้งเดียวของคุณอยู่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.