내`~ / .ssh / known_hosts` 파일을 일시적으로 무시 하시겠습니까? NASTY! Someone could be eavesdropping

~/.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$

노트:

.. 몇 가지 답 (들) / 코멘트 (들) 내가이되어 너무 짧은, 내 질문에 조금 오해의 소지가 있음을 인식하여 동작을 예상)) 내 경우에는 (정상, 그래서 나는 이유에 뒤에 유효한 이유가있다 “그것을 무시하고 싶다”)



답변

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

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

Host <your problematic host>
  StrictHostKeyChecking no


답변

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 인증서 인증 을 고려 하여 호스트를 확인할 수 있습니다.


답변

서버를 다시 설치하여 식별이 변경된 경우 지정된 행 155를 삭제 한 후 /Users/alexus/.ssh/known_hosts계속 진행하십시오.

다른 개인 네트워크간에 전환하는 경우 ssh 클라이언트가 호스트 이름에 따라 키를 저장하기 때문에 대신 호스트 이름을 사용하여 연결해야합니다. 다음과 같이 추가하십시오 /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

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


답변

-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"


답변

어떤 사람들은 그 말이 옳지 않다고 말하지만, 당신은 이것을하지 않는 등의 일을하지만, 몇 번의 임베디드 장치를 반복해서 테스트하기 위해 이것이 필요합니다. 사용 중지해야합니다 StrictHostKeyChecking=no.이 작업은 올바른 것으로 알려진 호스트 파일을로 재설정합니다 /dev/null. 여기에 자동 로그인 및 ps원격 장치가 있는 예가 있습니다.

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'


답변

모든 서버에 (RedHat 인 경우) 로그인 rm -f /etc/ssh/ssh_host_*한 다음 SSHD를 다시 시작하십시오.

무시할 필요가없는 새로운 SSH 호스트 키가 생성됩니다.

여러 서버에 복제 된 SSH 키가 필요한 것은 물론 경고도 표시하지 않는 인스턴스 하나만 생각할 수 있습니다. 하나의 A 레코드의 배수 A 레코드가있는 모든 호스트는 동일한 키를 갖습니다.


답변