AWS EC2 인스턴스에 연결할 수 없음-“호스트 키 확인 실패”


13

Rails 패키지로 Ubuntu 인스턴스를 설정하고 내 앱을 배포했는데 정상적으로 작동합니다.

그러나 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.

정확한 실제 오류를 알려주십시오. 오류 중 하나가 어떤 것인지 알려주는 것은 도움이되지 않습니다.
David Schwartz

답변:


19

ssh 서버에 연결하면 ssh 클라이언트는 신뢰할 수있는 호스트 목록을 IP 및 ssh 서버 지문의 키-값 쌍으로 유지합니다. ec2를 사용하면 종종 여러 서버 인스턴스에서 동일한 IP를 재사용하여 충돌을 일으 킵니다.

이 IP를 사용하여 이전 ec2 인스턴스에 연결하고 동일한 IP를 가진 새 인스턴스에 연결 한 경우 이전에 저장된 페어가 더 이상 새 페어와 일치하지 않으므로 컴퓨터가 "호스트 확인 실패"에 대해 불평합니다.

오류 메시지는 해결 방법을 알려줍니다.

/home/ubuntu/.ssh/known_hosts:1에 문제가있는 RSA 키
: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts"-R 46.137.253.231 "

또는 단순히 /home/ubuntu/.ssh/known_hosts를 열고 1 행을 삭제하십시오 ( ": 1"로 표시).

이제 새로운 호스트 확인을 연결하고 수신 할 수 있습니다.

일반적으로 ssh의 known_hosts 파일은 일반적으로 호스트 이름 또는 ip6 값에 대한 두 번째 행 쌍을 저장 했으므로 두 행을 제거해야 할 수도 있습니다.

경고 : 호스트 확인이 중요하며이 경고가 표시되는 좋은 이유입니다. 호스트 확인이 실패 할 것으로 예상하십시오. 확실하지 않은 경우 검증 키-값 쌍을 제거하지 마십시오.


내가 그거 했어. 이제이 오류가 발생합니다 : Permission denied (publickey). 퍼블릭 키 파일이 마지막으로 AWS 서버에 액세스했을 때 충분했기 때문에이 문제를 해결하는 방법에 대한 아이디어가 있습니다.
Najeeb

11

@flurdy 의 답변은 일회성 해결책으로 좋습니다.

그러나 자주 :

  • 새로운 EC2 인스턴스를 시작하고
  • EC2 인스턴스 시작 및 중지

.. 탄력적 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.연결할 때 여전히 말 을하지만 SSH를 추가했다는 것을 의미합니다 /dev/null...

그러나 SSH는 사용자에게 묻고 confirm the authenticity of host연결을 계속합니다.

따라서 더 편리하며 EC2 인스턴스를 사용하는 동안 항상 충분한 SSH 연결 오류 를 피하는 것은 아닙니다 .


이론적 으로이 설정은 SSH 연결의 보안을 낮추지 만 실제로는 일회성 EC2 인스턴스의 지문을 확인하지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.