알려진 호스트에 대한 SSH의 호스트 확인을 어떻게 피할 수 있습니까?


169

SSH를 사용하여 서버를 연결할 때마다 다음과 같은 프롬프트가 표시됩니다. "yes"라고 입력하지만 이것을 aovid하는 방법이 있습니까?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

7
/ dev / null은 중간 공격에서 사람에게 면역성이 있다고 생각하는 사람들을 위해 존재합니다 :)
Tim Post

1
최악의 부분 : y시간을 절약하기 위해 타이핑 하면 불평합니다 : Please type 'yes' or 'no': (hmph)
ADTC

답변:


234

-o옵션을 사용하십시오.

ssh -o "StrictHostKeyChecking no" user@host

1
'-i'플래그와 함께 대체 ID 파일을 사용할 수 있습니다.
MUY Belgium

대체 ID 파일을 사용하면 어떤 용도로 사용됩니까? 즉, 손상된 호스트에 연결하는 경우 인증 방식에 어떤 차이가 있습니까? 손상된 호스트가 키를 훔칠 수는 없습니다.
Dagelf

102

시작 부분에 다음 줄을 추가하십시오 /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

옵션 :

  • 호스트 서브넷은 *모든 IP에 대한 무제한 액세스를 허용 할 수 있습니다 .
  • /etc/ssh/ssh_config글로벌 구성 또는 ~/.ssh/config사용자 별 구성을 위해 편집하십시오 .

http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html을 참조 하십시오


2
동정 나는 당신을 한 번만 투표 할 수 있습니다. KnownHosts를 / dev / null로 설정하는 것은 천재입니다.
J0hnG4lt

1
가장 똑똑한 사람.
Darth

30
하아! 아내에게 말해
JimFred

30

새 호스트에 처음 연결할 때만이 정보를 얻을 수 있습니다. 응답 yes하면 호스트가 저장되고 ~/.ssh/known_hosts다음에 연결할 때 메시지가 표시되지 않습니다.

~/.ssh/known_hosts어떤 이유로 든 쓸 수없는 경우 (예 : 권한 문제) 연결할 때마다 프롬프트가 표시됩니다.


6
질문은 어쨌든 프롬프트를 피할 수 있습니까?
shantanuo

"CheckHostIP no"를 / etc / ssh / ssh_config 파일에 추가하려고했습니다. 그러나 그것은 작동하지 않는 것 같습니다
shantanuo

2
sudo chown -R user : user .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname 및 다시 연결하여 모든 문제를 해결하고 ssk_Hostkey가 | 변경되었거나 MITM의 대상이됩니다.
linuxdev2013

1
"
언제나

11

가장 좋은 방법은 (보안을 희생하지 않기 때문에) 한 클라이언트에서 모든 컴퓨터에 한 번 연결하는 것입니다 (매번 프롬프트가 표시되고 항상 예). 다른 답변에서 지적했듯이 키는 ~ / .ssh / known_hosts에 저장됩니다. 그런 다음이 파일을 나중에 연결하려는 모든 클라이언트 컴퓨터 (사용하는 각 사용자 계정마다)에 복사하십시오. 그러면이 모든 계정이 컴퓨터를 "알고"프롬프트가 표시되지 않습니다.

프롬프트를 비활성화하는 것의 장점은 SSH가 실제로 MITM 공격이 있는지 확인할 수 있다는 것입니다.


1
비록 순방향 연결을 통해 ssh를 자주한다면, 이것을 / etc / ssh / ssh_config에 추가하고 싶을 것입니다 : Host 127.0.0.1 NoHostAuthenticationForLocalhost yes
Dagelf

1

인증 대신 확인을 비활성화하려면 "-o CheckHostIP = no"옵션을 사용할 수 있습니다.

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

OP는 이미 같은 대답을 얻었고 그것을 받아 들였습니다.
Ayan

0

서버 IP 또는 도메인은 동일하지만 ssh 키가 일치하지 않기 때문에 ssh 키 서버가 변경 되었기 때문일 수 있습니다.

/home/$user/.ssh/known_hosts이 메시지를 피 하려면 저장된 키를 제거해야합니다 .

해당 파일의 모든 키를 제거하여이 도메인 이름에 대한 새 토큰이 생성되도록 수정했습니다.


1
Key changed 는 atsigns 상자 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!모든 대문자 로 훨씬 못생긴 메시지를 생성합니다 . 의 메시지 는에 항목 이 없는 경우에만 발생합니다 known_hosts.
dave_thompson_085

-1

~/.ssh/known_hosts파일 에 대한 권한을 확인하십시오 . 이 문제가 발생했을 때 광산이 잘못되었습니다. 나는 그것을 고쳤다 :

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