다음 메시지를 방지할 수 있습니까? (원격 호스트 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년)부터 사용되었습니다.