원격 호스트가 보낸 ECDSA 키의 지문을 확인하십시오.


24

서버에 ssh하려고 할 때 잘 알려진 경고 메시지가 나타납니다.

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

그리고 나는 왜 그런 서버의 IP를 변경했기 때문에 알고 있습니다. 그러나 그렇지 않은 경우 원격 호스트가 보낸 ECDSA 키의 지문을 어떻게 확인할 수 있습니까?

나는 그렇게하려고 노력했다.

echo -n ipofthehost | sha256sum

그러나 나는 같은 지문을 얻지 못합니다. 또한 aws에서와 같은 "hostname, ip"종류를 시도했지만 일치하지 않습니다.

known_hosts 파일에서 입구를 삭제하고 다시 ssh하려고하면 성공하고 다음을 알려줍니다.

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

지문을 얻기 위해 sha256sum을 적용하는 방법은 무엇이며 어떻게 확인할 수 있습니까?


2
잘 알려진 값이 없으면 확인할 수 없습니다. SSHd를 처음 시작하고 키가 생성 될 때만 기록하고 알려진 올바른 값을 확인하십시오.

질문을 편집했습니다. 이 사이트는 전문 비즈니스 환경에 대한 질문 만 허용합니다. 홈 네트워킹 질문은 여기서 다루지 않습니다. 편집 한 내용으로 질문을 저장하려고했습니다. 현재이 문제를 해결하기 위해 귀하의 질문에 대한 투표가 있습니다.
peterh는 모니카 복원

@ user186340 "SSHd를 처음 시작할 때만 기록하십시오"는 것은 사실 인 것 같습니다. SSHd를 실행하는 컴퓨터에 액세스 할 수 있으면 /etc/ssh/ssh_host_ecdsa_key.pub지문을 얻을 수 있습니다 . 난 그냥했다.
jamadagni

답변:


12

공개 키 지문은 단순한 IP 문자열 해시가 아닙니다.

원격 호스트 공개 키를 검색하려면 ssh-keyscan <IP>일반 도구를 사용하여 지문을 추출 할 수 있습니다 ( ssh-keygen -lf <public_key_file>).

마지막으로 known_hosts파일 에서 현재 지문과 비교할 수 있습니다 ssh-keygen -l -F <domain_or_ip>.


2
SSH를 통해 연결하고 ecdsa 키를 처음으로 강제 할 때 왜 ( ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server43 ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.) 영숫자 지문 ( )을 얻었는지 아직 혼란 스럽 습니다 ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub.
William Turrell

1
@WilliamTurrell이 문제는 서버에 이전 (SSH 6.8 이전 버전) 버전이 ssh-keygen있거나 서버 공급자가 시간을 따라 가지 않았으며 새 SHA256 대신 md5 해시 만 제공하기 때문에 발생합니다. 여기에 해결 방법이 있습니다. superuser.com/questions/929566
SeldomNeedy

9

좀 더 자세하게 : 경고 메시지는 원격 호스트가 보낸 ECDSA 키의 지문을 나타내므로 호스트의 공개 (ecdsa) 키에 대한 정보를 수집합니다.

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

그런 다음 known_ecssa 키가 알려진 known_hosts 파일에서 다음을 찾을 수 있습니다.

ssh-keygen -l -F ipofhost

지문을 비교하려면 known_hosts 파일의 내용 (이 호스트와 관련된 항목 만)을 넣어야하며 ecdsa_file_from_known_hosts라고 부르고 다음과 같이 비교할 수 있습니다.

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

그리고 쇼가 같은 해시인지 확인하십시오.

물론 그들은 일치하지 않으므로 경고 메시지가 나타납니다 (ssh는 내부적으로 일치하는 것을 확인합니다). ip 변경에 대해 확신한다면 (man-in-the-middle 공격이 발생하지 않음) known_hosts 파일에서 해당 호스트의 항목을 삭제하고 다음에 새로운 항목을 ssh 할 수 있습니다. 그러한 파일에 추가됩니다.

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