원격 호스트 ID가 변경되었다는 메시지를 방지하는 방법

원격 호스트 ID가 변경되었다는 메시지를 방지하는 방법

다음 메시지를 방지할 수 있습니까? (원격 호스트 ID가 변경됨)

이 연결 구문을 사용하는 경우에만

 ssh xxx.xxx.xxx.xxx

경고 메시지 예:

 ssh  10.19.11.1
 CentOS release 5.8 (Final)
 Kernel 2.6.18-308.el5 on an i686
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @ 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 the RSA host key has just been changed.
 The fingerprint for the RSA key sent by the remote host is
 dd:6f:32:8f:8f:8c:70:9c:95:f1:48:83:60:97:cc:ed.
 Please contact your system administrator.
 Add correct host key in /root/.ssh/known_hosts to get rid of this message.
 Offending key in /root/.ssh/known_hosts:7
 RSA host key for 10.19.11.1 has changed and you have requested strict checkin.
 Host key verification failed.

이 메시지를 받을 때마다 /root/.ssh/known_hosts를 정리합니다.

~처럼

     cp /dev/null /root/.ssh/known_hosts

또한 crontab에서 cp /dev/null /root/.ssh/known_hosts 명령을 설정하고 싶습니다.

따라서 Known_hosts 파일은 매일 24:00에 정리됩니다(이 솔루션은 문제를 줄여주지만 해결하지는 않습니다).

따라서 이 솔루션은 Known_hosts 파일을 매일 정리하더라도 사용자에게 여전히 경고 메시지가 표시될 수 있으므로 좋은 솔루션이 아닙니다.

SSH 호스트 키 확인을 방지하기 위해 /etc/ssh/ssh_config 파일에서 뭔가를 할 수 있을까요?

논평:

SSH 호스트 키 확인을 방지하기 위해 다음 방법을 사용하고 싶지 않습니다(Reflection/putty를 사용하기 때문에).

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

나는 이 구문만 사용해야 한다고 주장합니다.

 ssh xxx.xxx.xxx.xxx 

연결을 위해

답변1

일회용 VM 등에 연결할 때는 애초에 키를 저장하지 않는 것이 좋습니다.

ssh0다음 내용으로 별칭이나 함수를 만듭니다 .

alias ssh0='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR'

이렇게 하면 파일을 정크로 오염시키지 않고 ~/.known_hosts다른 명령을 사용하기 때문에 일부 로컬 위젯을 감지하는 데 사용되는 "실제" SSH와 SSH 사이에 정신적 경계가 있습니다.

또 다른 유용한 별칭은 다음과 같습니다.

alias sshy='ssh -o CheckHostIP=no'

예를 들어, IP가 자주 변경되는 장치에 연결할 때. 홈 라우터의 경우 ISP는 전원을 껐다 켤 때마다 다른 IP를 할당합니다.

답변2

고쳐 쓰다:이제 다음을 사용할 수 있습니다.SSH 인증서, TLS 인증서와 유사합니다. 그런 다음 known_hosts신뢰 항목을 추가할 수 있습니다.자격증개별 키 입력 대신 이 메시지를 다시는 받지 않습니다.


알아채다@0xC0000022L에 대한 경고!

만약 너라면알다호스트 키가 변경되었습니다. 파일에서 해당 특정 항목을 제거할 수 있습니다 known_hosts.

ssh-keygen -R xxx.xxx.xxx.xxx

이는 전체 호스트 파일을 덮어쓰는 것보다 훨씬 낫습니다(.NET을 사용하여 수행할 수 있음) > /root/.ssh/known_hosts.

ssh명령줄 옵션을 사용하고 싶지 않다면 SSH 코드를 수정하고 다시 컴파일하는 것이 유일한 다른 방법이라고 생각합니다. 당신은 어느진짜하고 싶지 않아!

답변3

1단계: 결함이 있는 키 제거

 ssh-keygen -R 192.168.1.1

2단계: 새 키 추가

 ssh-keyscan 192.168.1.1 >> ~/.ssh/known_hosts

아니면 상황에 따라

 > ~/.ssh/known_hosts
ssh-keyscan 192.168.1.1 192.168.1.2 ... >> ~/.ssh/known_hosts

답변4

127.0.0.1(localhost)에만 연결하는 것이 중요한 경우 다음 ssh 옵션이 작동합니다.

-o NoHostAuthenticationForLocalhost=yes

이 옵션은 최소한 OpenSSH 3.7(2003년)부터 사용되었습니다.

관련 정보