내`~ / .ssh / known_hosts` 파일을 일시적으로 무시 하시겠습니까?


48

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

노트:

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


9
당신은 잘못된 질문을하고 있습니다. 문제를 "무시"해서는 안됩니다. 무슨 일이 일어나고 있는지 파악하고 해결해야합니다.
Michael Hampton

9
사용자를 위해 말할 수는 없지만 한 가지 예는 자동화 된 설치 프로세스 (예 : 킥 스타트)를 개발하는 상황이며, 반복 워크 플로우에는 빌드, 연결, 테스트, 빌드 프로세스 수정 및 재 빌드가 포함됩니다. 반복해서 긁는 다.
Goladus

10
@MichaelHampton-VMware와 VirtualBox가 게스트의 IP 주소를 재활용함에 따라 항상 이것을 얻습니다. 나를 위해, 그것은 올바른 질문입니다 :)

1
FWIW LAN에 시스템이 있고 다른 호스트 키와 함께 dropbear를 사용하여 시작하는 동안 디스크 암호화 암호를 입력하기 때문에이 답변을 계속 검색합니다.
Zulan

1
@ jww 이것은 귀하의 시나리오에 대한 잘못된 질문 / 솔루션입니다. 대신 IP 주소를 무시하고 호스트 키를 확인하도록 SSH를 구성해야합니다. 예를 들어 여기를
Jon Bentley

답변:


56

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

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

Host <your problematic host>
  StrictHostKeyChecking no

그것은 예상 된 동작입니다) 그래서 그것은 정상적입니다 (필자의 경우)
alexus

1
@alexus "예상 된"경우, 예상되는 특정 호스트 이름 / IP에 옵션을 적용 할 수 있습니다.
chrylis

1
@alexus 그리고이 작업을 수행하면 ssh가 제공하는 모든 보호 기능이 거의 손실된다는 것을 기억하십시오. 누군가 당신을 MITM하고 모든 트래픽을 캡처하는 것은 사소한 일이므로 텔넷을 사용하고있을 수도 있습니다.
Michael Hampton

1
이것은 더 이상 작동하지 않습니다 (적어도 OpenSSH_5.3p1의 경우)
draeath

-o StrictHostKeyChecking=no비밀번호로 로그인하는 기능을 제거합니다. 이것에 대한 플래그의 부족이 사용자가 행동을 강제하도록 허용하는 유닉스 원칙과 직접적으로 관련이 있습니까? 현재 로컬 IP로 로컬 컴퓨터에 로그인하려고합니다. 컴퓨터를 다시 포맷했기 때문에 호스트 키가 변경되었습니다. 여기의 모든 것이 의미가 있으며 상황에 따른 보안 위험은 없습니다.
Wowfunhappy

31

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


2
비밀번호 인증을 사용할 수 있기 때문에 현재 가장 높은 평가를받은 것보다 더 나은 답변이 될 수 있습니다 (물론 비밀번호를 입력하기 전에 정확히 무엇을하고 있는지 이해해야합니다 ...)
VZ.

나는 여기에 조금 혼란 스러워요 : 당신은 안 또한 사용 -o StrictHostKeyChecking=no 에 추가-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null 옵션 -의 최종 답변을? : ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host?
Gabriel Staples

온라인에서 찾은 관련 글 : shellhacks.com/disable-ssh-host-key-checking
Gabriel Staples

5

서버를 다시 설치하여 식별이 변경된 경우 지정된 행 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합니다. 이런 식으로 두 서버 모두 다른 호스트 키를 가질 수 있습니다.


두 개인 네트워크 간을 전환하고 두 개의 동일한 IP에 연결하면 어떻게됩니까?
alexus

1
내 답변을 편집했습니다.
etagenklo

2
@alexus 그렇다면 IPv6이 필요합니다. :) 원래 질문에 유용한 정보였습니다.
Michael Hampton

2

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

2

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

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

-2

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

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

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


6
이 답변은 잘못되었습니다. 지문은 클라이언트에서 로컬입니다.
89c3b1b8-b1ae-11e6-b842-48d705
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.