[ssh] ssh : 호스트 ‘hostname’의 신뢰성을 설정할 수 없습니다

컴퓨터에 ssh 할 때 언젠가이 오류 경고가 표시되고 “yes”또는 “no”라는 메시지가 표시됩니다. 다른 컴퓨터로 자동 ssh하는 스크립트에서 실행할 때 약간의 문제가 발생합니다.

경고 메시지 :

The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.

자동으로 “예”라고 말하거나 무시하는 방법이 있습니까?



답변

ssh 클라이언트에 따라 명령 행에서 StrictHostKeyChecking 옵션을 no로 설정하거나 키를 null known_hosts 파일로 보낼 수 있습니다. 구성 파일에서 모든 호스트 또는 지정된 IP 주소 또는 호스트 이름 세트에 대해 이러한 옵션을 설정할 수도 있습니다.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

편집하다

@IanDunn이 지적한 것처럼이 작업을 수행하면 보안 위험이 있습니다. 연결하려는 리소스가 공격자에 의해 스푸핑 된 경우 대상 서버의 챌린지를 잠재적으로 다시 재생하여 원격 리소스에 실제로 연결되어있는 동안 원격 리소스에 연결한다고 생각하도록 속일 수 있습니다. 당신의 자격 증명. HostKeyChecking을 건너 뛰도록 연결 메커니즘을 변경하기 전에 해당 위험이 적절한 지 신중하게 고려해야합니다.

참조 .


답변

더 나은 답변이 필요한 오래된 질문.

비활성화하지 않고 대화식 프롬프트를 방지 할 수 있습니다 StrictHostKeyChecking(안전하지 않음).

다음 로직을 스크립트에 통합하십시오.

if [ -z "$(ssh-keygen -F $IP)" ]; then
  ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi

서버의 공개 키가에 있는지 확인합니다 known_hosts. 그렇지 않은 경우 서버에서 공개 키를 요청하여에 추가합니다 known_hosts.

이러한 방식으로 중간자 공격에 한 번만 노출되며 다음과 같이 완화 될 수 있습니다.

  • 스크립트가 보안 채널을 통해 처음 연결되도록 보장
  • 로그 또는 known_hosts를 검사하여 지문을 수동으로 확인 (한 번만 수행)

답변

비활성화하거나 제어 비활성화하려면 다음 줄을 시작 부분에 추가하십시오 /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을 참조 하십시오

superuser.com과 비슷한 질문-https://superuser.com/a/628801/55163 참조


답변

~/.ssh/known_hosts쓰기 가능한지 확인하십시오 . 그것은 나를 위해 그것을 고쳤다.


답변

이를 해결하는 가장 좋은 방법은 ‘StrictHostKeyChecking’외에도 ‘BatchMode’를 사용하는 것입니다. 이런 식으로 스크립트는 새 호스트 이름을 받아 known_hosts 파일에 쓰지만 예 / 아니요 개입이 필요하지 않습니다.

ssh -o BatchMode=yes -o StrictHostKeyChecking=no user@server.example.com "uptime"


답변

일반적으로 ‘~ / .ssh / config’에있는 구성 파일을 편집하고 파일을 시작하면 아래 줄을 추가하십시오.

Host *
    User                   your_login_user
    StrictHostKeyChecking  no
    IdentityFile          ~/my_path/id_rsa.pub

사용자 설정 your_login_user이이 설정이 your_login_user
StrictHostKeyCheck에 속해 있음을 no 로 설정하면
IdentityFile이 RSA 키 경로 라는 메시지가 표시되지 않습니다.

이것은 나와 내 스크립트에 도움이됩니다. 행운을 빕니다.


답변

이 경고는 보안 기능으로 인해 발생하므로이 기능을 비활성화하지 마십시오.

한 번만 표시됩니다.

두 번째 연결 후에도 여전히 나타나면 known_hosts파일 에 문제가있을 수 있습니다. 이 경우 다음과 같은 메시지가 나타납니다.

Failed to add the host to the list of known hosts

파일의 사용 권한을 사용자가 쓸 수 있도록 변경하는 소유자를 변경하여 문제를 해결할 수 있습니다.

sudo chown -v $USER ~/.ssh/known_hosts