내 `~/.ssh/known_hosts` 파일을 일시적으로 무시하시겠습니까?

내 `~/.ssh/known_hosts` 파일을 일시적으로 무시하시겠습니까?

내 파일을 일시적으로 무시할 수 있는 방법이 있나요 ~/.ssh/known_hosts?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

메모:

.. 몇 가지 답변/댓글을 통해 제 질문이 약간 오해의 소지가 있다는 것을 깨달았습니다. 너무 짧습니다.예상되는 동작)이므로 정상입니다(내 경우에는).내가 "무시"를 보고 싶은 이유에 대한 타당한 이유가 있습니다.)

답변1

ssh -o StrictHostKeyChecking=no일시적으로 확인을 해제하는 데 사용할 수 있습니다 known_hosts. 그러나 나는 이것에 대해 조언하고 싶습니다. 호스트 키가 변경된 이유를 실제로 확인해야 합니다.

~/.ssh/config또 다른 옵션은 문제의 호스트에 대한 특정 항목을 추가하는 것입니다 . 재부팅할 때마다 새 호스트 키를 생성하는 특정 호스트가 있고 하루에 여러 번 타당한 이유로 재부팅되는 경우 이는 유효한 접근 방식일 수 있습니다.

Host <your problematic host>
  StrictHostKeyChecking no

답변2

POSIX 환경에서 알려진 호스트 파일을 완전히 무시하려면 GlobalKnownHostsFileUserKnownHostsFile옵션을 다음으로 설정하십시오 /dev/null.

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

옵션 을 설정하면 StrictHostKeyChecking=no연결할 수 있지만 SSH는 허용됩니다.여전히 경고가 표시됩니다:

ssh -o StrictHostKeyChecking=no user@host

다른 사람들이 지적했듯이 근본적인 문제를 해결하는 것이 더 나을 것입니다. 당신은 고려할 수 있습니다SSH 인증서 인증예를 들어 호스트를 확인하기 위해.

답변3

서버를 다시 설치하여 ID가 ​​변경된 경우 지정된 155행을 삭제하고 /Users/alexus/.ssh/known_hosts계속 진행해야 합니다.

다른 개인 네트워크 간에 전환하는 경우 SSH 클라이언트도 호스트 이름에 따라 키를 저장하므로 대신 호스트 이름을 사용하여 연결해야 합니다. 다음과 같은 내용을 다음과 같이 추가하세요 /etc/hosts.

10.52.11.171 server1
10.52.11.171 server2

그런 다음 ssh server1서브넷 1에 연결될 때와 ssh server2서브넷 2에 연결될 때 사용합니다. 이렇게 하면 두 서버 모두 서로 다른 호스트 키를 가질 수 있습니다.

답변4

-o StrictHostKeyChecking=no호스트가 Known_hosts 파일에 아직 없는 경우에만 작동합니다.

VM 복제로 인해 호스트 키가 변경될 것으로 예상되는 경우 다음과 같은 종류의 호스트를 무시하도록 하는 것이 더 깔끔하다고 생각합니다(경고 없음).

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

관련 정보