한 시스템에서 SSHknown_hosts 무시

한 시스템에서 SSHknown_hosts 무시

SSH 및 Jumphost를 사용할 때 이상한 동작이 발생합니다. 머신 A에서 설정이 실행될 때(cygwin, OpenSSH_7.1p1, OpenSSL 1.0.2d 2015년 7월 9일) 머신 B에서는 작동하지 않습니다(OpenSSH_6.7p1 Ubuntu-5ubuntu1.3, OpenSSL 1.0.1f 2014년 1월 6일). Ansible은 배스천 호스트를 통해 원격 머신에 연결하려면 이 설정을 사용해야 합니다.

나는 다음을 가지고 있습니다ssh.config

Host bastion
    HostName               a.a.a.a
    ProxyCommand           none
    UserKnownHostsFile     known_hosts

Host *
    User                   user
    Port                   22
    ForwardAgent           yes
    ProxyCommand           ssh [email protected] nc %h %p
    PasswordAuthentication no
    UserKnownHostsFile     known_hosts

이러한 known_hosts파일은 동일한 폴더에 있습니다.

부르다

ssh bastion -F ssh.config

두 컴퓨터 모두에서 작동합니다. 하지만

ssh [email protected] -F ssh.config

이는 A 머신에서만 작동하고 B 머신에서는 작동하지 않습니다.

The authenticity of host 'a.a.a.a (a.a.a.a)' can't be established.
ECDSA key fingerprint is ###.

프록시 명령을 다음으로 변경해 보았습니다.

ProxyCommand ssh [email protected] -F ssh.config nc %h %p

이로 인해 문제가 해결되었습니다.

ssh [email protected] -F ssh.config

이제 두 시스템 모두에서 실행되기 때문입니다. 그러나 구성도 rsyncAnsible에 의해 실행되며, 다른 기본 디렉터리에서 실행되므로 ssh.config파일을 찾을 수 없습니다. 이식성을 위해 절대 경로를 사용하고 싶지 않습니다. 이러한 스크립트는 로컬 컴퓨터(일부 Windows에서는 함께 제공됨 cygwin)에서 실행하거나 원격 에이전트를 사용하는 전용 빌드 서버를 통해 실행해야 합니다.

ProxyCommand지금은 다음과 같이 설정했습니다 .

ProxyCommand ssh -o UserKnownHostsFile=/dev/null \
  -o StrictHostKeyChecking=no [email protected] nc %h %p

rsync이것은 A+B에서 작동하지만 /problems 가 있습니다 ansible. 로그는 다음을 제공합니다.

msg: Warning: Permanently added 'a.a.a.a' (ECDSA) to the list of known hosts.

호스트 키 확인에 실패했습니다.

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

TL;DR 초기 구성은 호스트 키를 설정하는 데 수동 단계가 필요하므로 헤드리스로 작동하지 않습니다. 대안은 아래의 작업 흐름을 중단합니다( rsync). 다른 옵션이 있나요?

답변1

호스트 키 보안을 "해결"할 수 있는 방법은 ssh-keyscan이를 사용하여 파일을 만든 known_hosts다음 호스트의 신뢰성을 수동으로 확인하지 않고도 연결할 수 있다는 것입니다.

다음과 같이 사용할 수 있습니다.

ssh-keyscan hostname > known_hosts

"약간" 보안이 손실되지만 신뢰할 수 있는 환경에서 실행되고 있다면 허용됩니다.

관련 정보