
원격 호스트에 연결하기 위해 SSH를 사용하는 도구를 사용하고 있습니다. 불행하게도 이 도구는 사용자 입력을 허용하지 않으며 원격 호스트 키를 알 수 없으면 호출이 영원히 중단됩니다. 원격 호스트 키를 알 수 없는 경우 SSH 호출이 실패하도록 하는 옵션 또는 옵션 세트가 있습니까?
답변1
-o StrictHostKeyChecking=yes
호출 에 사용 ssh
:
이 플래그가 yes로 설정되면 ssh(1)는 호스트 키를 ~/.ssh/known_hosts 파일에 자동으로 추가하지 않으며 호스트 키가 변경된 호스트에 대한 연결을 거부합니다.
기본값은 다음과 같 ask
으며 이것이 문제가 있는 이유입니다.
이 플래그가 질문(기본값)으로 설정되면 사용자가 실제로 수행하려는 작업인지 확인한 후에만 새 호스트 키가 사용자가 알고 있는 호스트 파일에 추가되며 ssh는 호스트 키가 있는 호스트에 연결하는 것을 거부합니다. 변경되었습니다.
답변2
해결 방법으로 호스트를 신뢰할 수 있는지 직접 확인할 수 있습니다.
$ ssh-keygen -H -F host.example.com
# Host host.example.com found: line 205 type RSA
...
여기서는 ssh-keygen이 어떤 경우에도 0으로 종료되므로 출력을 확인해야 합니다.
ssh-keygen -H -F host.example.com |
grep -q found: || echo "host is not trusted" && exit 2
답변3
-oBatchMode=yes
사용자 상호 작용이 필요한 경우(예: 비밀번호 요청, 원격 호스트 키 확인 등) 실패하는 데 사용할 수 있습니다.
답변4
~/.ssh/config에 다음과 같은 기본 옵션을 추가할 수 있습니다.
Host *
StrictHostKeyChecking no
이렇게 하면 알 수 없거나 변경된 호스트 키에 대해 불평하는 SSH가 비활성화됩니다.
적절한 호스트 패턴을 제공하여 이러한 옵션을 호스트 집합으로 제한할 수 있습니다.