알려진 호스트에 대한 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.