Không thể kết nối với phiên bản AWS EC2 - Xác minh khóa máy chủ bị lỗi


13

Tôi đã thiết lập một phiên bản Ubuntu với gói Rails, triển khai ứng dụng của mình và nó hoạt động tốt.

Nhưng khi tôi cố gắng thực hiện SSH, nó không cho phép tôi đăng nhập từ xa và ném các lỗi như : Host key verification failed.

Vấn đề dường như là dai dẳng. Tôi đã gắn IP đàn hồi vào trường hợp đó và tôi không thể thấy DNS công cộng.

Ví dụ của tôi đang chạy ở khu vực Singapore.

ssh đầu ra gỡ lỗi:

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.

Bạn phải cho chúng tôi biết các lỗi thực tế chính xác mà bạn có. Nói cho chúng tôi biết một trong những lỗi đó là không hữu ích.
David Schwartz

Câu trả lời:


18

Khi bạn kết nối với máy chủ ssh, máy khách ssh của bạn sẽ giữ một danh sách các máy chủ đáng tin cậy dưới dạng các cặp giá trị khóa của IP và ssh máy chủ in. Với ec2, bạn thường sử dụng lại cùng một IP với một số trường hợp máy chủ gây ra xung đột.

Nếu bạn đã kết nối với một phiên bản ec2 trước đó với IP này và bây giờ kết nối với một phiên bản mới có cùng IP đó, máy tính của bạn sẽ phàn nàn về "Xác minh máy chủ không thành công" vì cặp được lưu trữ trước đó không còn phù hợp với cặp mới.

Thông báo lỗi cho bạn biết cách khắc phục:

Vi phạm khóa RSA trong /home/ubfox/.ssh/ Unknown_hosts: 1
xóa bằng: ssh-keygen -f "/home/ubfox/.ssh/ Unknown_hosts" -R 46.137.253.231 "

Thay thế chỉ đơn giản là mở /home/ubfox/.ssh/ Unknown_hosts và xóa dòng 1 (như được chỉ định bởi ": 1").

Bây giờ bạn có thể kết nối và nhận được xác minh máy chủ mới.

Xin lưu ý rằng thường thì tệp know_hosts của ssh thường lưu trữ một cặp dòng thứ hai cho giá trị tên máy chủ hoặc ip6, do đó bạn có thể cần phải xóa một vài dòng.

Cảnh báo: Xác minh máy chủ rất quan trọng và đó là lý do chính đáng tại sao bạn nhận được cảnh báo này. Hãy chắc chắn rằng bạn đang mong đợi xác minh máy chủ không thành công. Không xóa cặp khóa-giá trị xác minh nếu không chắc chắn.


Tôi đã làm điều đó. Bây giờ tôi nhận được lỗi này: Quyền bị từ chối (khóa công khai). Mọi ý tưởng làm thế nào để giải quyết vấn đề này, vì tệp khóa công khai đủ tốt vào lần cuối cùng tôi truy cập máy chủ AWS của mình.
Najeeb

11

Câu trả lời của @flurdy là giải pháp một lần.

Nhưng nếu bạn thường xuyên:

  • khởi chạy các phiên bản EC2 mới,
  • bắt đầu và dừng các trường hợp EC2,

.. không sử dụng IP đàn hồi (được gắn vĩnh viễn vào máy chủ của bạn) sau đó bạn xử lý các IP / tên máy chủ mới / thay đổi của các phiên bản của bạn mọi lúc .

Nếu vậy thì bạn có thể muốn dừng vĩnh viễn việc kiểm tra SSH và lưu trữ dấu vân tay của máy chủ đối với tên máy chủ công cộng EC2 .


Để làm điều đó chỉ cần thêm điều này vào ~/.ssh/config:

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


Xin lưu ý rằng SSH vẫn sẽ nói Warning: Permanently added (...) to the list of known hosts.khi kết nối nhưng chỉ có nghĩa là nó đã thêm nó vào /dev/null...

Tuy nhiên SSH sẽ ngừng hỏi nếu bạn confirm the authenticity of hostvà chỉ tiếp tục kết nối.

Vì vậy, nó thuận tiện hơn và bạn có thể tránh không phải lúc nào cũng đủ dài các lỗi kết nối SSH trong khi sử dụng các phiên bản EC2 của mình.


Tôi phải nói thêm rằng về mặt lý thuyết, cài đặt này làm giảm tính bảo mật của các kết nối SSH của bạn nhưng trong thực tế, bạn có thể sẽ không kiểm tra dấu vân tay của các phiên bản EC2 một lần của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.