SSHFP 레코드는 다음과 같이 ssh 서버에서 생성 된 다음 바인드 영역에 추가되었습니다.
$ ssh-keygen -r www.test.us.
www.test.us. IN SSHFP 1 1 ad04dfaf343a93beeb939eed1612168f7eadbed7
www.test.us. IN SSHFP 2 1 432209c72c4f0e99546d601dd96c04ce804191f9
다음과 같이 DNS를 통해 ssh 클라이언트에서 필요한 레코드를 가져올 수 있습니다.
$ dig www.test.us any
;; QUESTION SECTION:
;www.test.us. IN ANY
;; ANSWER SECTION:
www.test.us. 120 IN SSHFP 1 1 AD04DFAF343A93BEEB939EED1612168F7EADBED7
www.test.us. 120 IN SSHFP 2 1 432209C72C4F0E99546D601DD96C04CE804191F9
www.test.us. 120 IN A 192.168.1.50
그러나 연결시 클라이언트의 ssh가이를 찾지 못합니다.
$ rm .ssh/known_hosts
$ ssh -vo VerifyHostKeyDNS=yes www
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/test/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: Connecting to www [192.168.1.50] port 22.
debug1: Connection established.
debug1: identity file /Users/test/.ssh/id_rsa type 1
debug1: identity file /Users/test/.ssh/id_rsa-cert type -1
debug1: identity file /Users/test/.ssh/id_dsa type -1
debug1: identity file /Users/test/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p2_hpn13v11
debug1: match: OpenSSH_5.8p2_hpn13v11 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 69:dc:47:97:e1:a5:c9:07:4a:2b:9e:3c:a2:2b:c8:8c
DNS lookup error: name does not exist
The authenticity of host 'www (192.168.1.50)' can't be established.
RSA key fingerprint is 69:dc:47:97:e1:a5:c9:07:4a:2b:9e:3c:a2:2b:c8:8c.
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?
왜 이것이 실패하는지에 대한 아이디어가 있습니까? DNSSEC는 보안을 유지하기 위해 필요하며 DNSSEC는 현재 활성화되어 있지 않기 때문에 경고가 표시됩니다. 추가 문제로 다루기 전에 DNSSEC 없이이 작업을 시작하기를 희망합니다.
ssh 서버는 OpenSSH_5.8p2_hpn13v11이 포함 된 FreeBSD 9.1이며 BIND 9.8.3-P4를 사용하여 DNS를 호스팅합니다. OS X 10.8.2에서 OpenSSH_5.9p1로, Linux Linux 3.6.10-1-ARCH에서 OpenSSH_6.1p1로 연결을 시도했습니다.
최신 정보
이 문제를 해결하기 위해 OpenSSH_6.1이 ssh 서버로 내장 된 새로운 OpenBSD 5.2 VM을 만들었습니다. OpenSSH 서버의 다른 모든 구현은 OpenBSD 서버의 포트 일 뿐이므로 반드시 작동해야합니다. 서버에서 SSHFP 레코드를 생성합니다.
# ssh-keygen -r vm1.test.us.
vm1.test.us. IN SSHFP 1 1 419c5338920e11183380d81f002fc998389b944f
vm1.test.us. IN SSHFP 1 2 cb5bbbf5aef231f57a1a4dcf1e790f1be032b124d0d591023f33cfd5f91ec556
vm1.test.us. IN SSHFP 2 1 0fdf92ce946b5cfee5f96a3e1ef710edc50280ff
vm1.test.us. IN SSHFP 2 2 f2ee7334ee9f9a426f51f20af8f4bc7155d567c9d38a6bffaa6c643af405711e
vm1.test.us. IN SSHFP 3 1 b5e94320f0bc0b46cc6627ca7221679a65c79962
vm1.test.us. IN SSHFP 3 2 60704213a0bbd8dae813d113bfe4ae190a780b89836e6e1c567b7cfde89805f8
FreeBSD 바인드 서버에 추가하고 이름을 다시로드합니다. 그런 다음 레코드에 액세스 할 수 있는지 테스트하십시오.
$ host -t any vm1
vm1.test.us has SSHFP record 1 1 419C5338920E11183380D81F002FC998389B944F
vm1.test.us has SSHFP record 1 2 CB5BBBF5AEF231F57A1A4DCF1E790F1BE032B124D0D591023F33CFD5 F91EC556
vm1.test.us has SSHFP record 2 1 0FDF92CE946B5CFEE5F96A3E1EF710EDC50280FF
vm1.test.us has SSHFP record 2 2 F2EE7334EE9F9A426F51F20AF8F4BC7155D567C9D38A6BFFAA6C643A F405711E
vm1.test.us has SSHFP record 3 1 B5E94320F0BC0B46CC6627CA7221679A65C79962
vm1.test.us has SSHFP record 3 2 60704213A0BBD8DAE813D113BFE4AE190A780B89836E6E1C567B7CFD E89805F8
vm1.test.us has address 192.168.1.60
$ dig -t any vm1.test.us
;; QUESTION SECTION:
;vm1.test.us. IN ANY
;; ANSWER SECTION:
vm1.test.us. 120 IN SSHFP 1 2 CB5BBBF5AEF231F57A1A4DCF1E790F1BE032B124D0D591023F33CFD5 F91EC556
vm1.test.us. 120 IN SSHFP 2 1 0FDF92CE946B5CFEE5F96A3E1EF710EDC50280FF
vm1.test.us. 120 IN SSHFP 2 2 F2EE7334EE9F9A426F51F20AF8F4BC7155D567C9D38A6BFFAA6C643A F405711E
vm1.test.us. 120 IN SSHFP 3 1 B5E94320F0BC0B46CC6627CA7221679A65C79962
vm1.test.us. 120 IN SSHFP 3 2 60704213A0BBD8DAE813D113BFE4AE190A780B89836E6E1C567B7CFD E89805F8
vm1.test.us. 120 IN SSHFP 1 1 419C5338920E11183380D81F002FC998389B944F
vm1.test.us. 120 IN A 192.168.1.60
레코드는 DNS를 통해 명확하게 제공되므로 ssh를 사용하려고합니다.
$ rm .ssh/known_hosts
$ ssh -vo VerifyHostKeyDNS=yes root@vm1
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to vm1 [192.168.1.60] port 22.
debug1: Connection established.
debug1: identity file /Users/test/.ssh/id_rsa type 1
debug1: identity file /Users/test/.ssh/id_rsa-cert type -1
debug1: identity file /Users/test/.ssh/id_dsa type -1
debug1: identity file /Users/test/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA d8:01:b5:b2:3e:c7:55:ce:19:c1:6d:77:39:92:7d:0f
DNS lookup error: name does not exist
The authenticity of host 'vm1 (192.168.1.60)' can't be established.
RSA key fingerprint is d8:01:b5:b2:3e:c7:55:ce:19:c1:6d:77:39:92:7d:0f.
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?
이 시점에서 ssh 클라이언트와 서버를 장애 지점으로 제거하는 것이 안전하다고 생각합니다. 대신 DNS 서버에 중점을 둘 것입니다. 누군가가 볼 곳을 제안하지 않는 한, 나는 패킷 캡처를 가져 와서 단서를 찾기 위해 파고 들었다고 생각합니다.
업데이트 2
다음은 패킷 캡처 결과입니다. ssh www; 표준에 실패
No matching host key fingerprint found in DNS.
패킷 캡처는 DNS가 조회 레코드를 리턴하지 못함을 보여줍니다.
mbp13.test.us www.test.us DNS Standard query 0x1c5e SSHFP www
www.test.us mbp13.test.us DNS Standard query response 0x1c5e No such name
ssh와 비교하십시오 www.test.us; 메시지와 함께 실패
No matching host key fingerprint found in DNS.
그러나 패킷 캡처는 DNS가 실제로 레코드를 반환 함을 보여줍니다.
mbp13.test.us www.test.us DNS Standard query 0x0ebd SSHFP www.test.us
www.test.us mbp13.test.us DNS Standard query response 0x0ebd SSHFP SSHFP`
첫째, 오류 메시지가 두 경우 모두 동일하다는 것은 약간 당혹스러운 일입니다. 레코드가 리턴되지 않는 케이스 1을 수정하기 위해 일부 레코드를 추가 할 수 있지만 큰 문제는 케이스 2입니다. DNS가 작동하고 SSHFP 레코드가 ssh 클라이언트에 리턴됩니다. DNS 쿼리 응답 후 패킷이 전송되지 않으며 ssh 클라이언트는 즉시 일치하지 않는 지문 메시지를 표시합니다. 이것은 테스트중인 모든 ssh 클라이언트가 손상되었거나 DNS에 저장된 지문이 잘못되어 일치하지 않음을 의미합니다. 클라이언트인지 의심되므로 왜 DNS의 지문이 잘못 되었습니까? 지문은이 게시물의 맨 처음에 설명 된대로 내장 된 ssh 도구 ssh-keygen에서 생성되었습니다. 또한 컨텍스트에 따라 지문이 다른 형식으로 표시되므로 문제가 해결되지 않습니다.
DNS record format: ad04dfaf343a93beeb939eed1612168f7eadbed7
ssh client mesg format: 69:dc:47:97:e1:a5:c9:07:4a:2b:9e:3c:a2:2b:c8:8c
ssh-keygen -r에서 출력 된 지문이 동일한 ssh 서버에서 반환 된 공개 키와 일치하지 않는 이유에 대한 제안이 있습니까?
업데이트 3
나는 마지막 옵션으로 내려갑니다. 주말 전에 누군가가 올바른 방향을 제시하지 않으면 토요일에 완전히 OpenBSD 기반의 VM을 사용하여 복제 환경을 만들게됩니다. OpenBSD는 OpenSSH를 소유하고 있기 때문에 DNS를 통한 SSHFP가 작동하려면 이상적인 조건이어야합니다. 바인드가 OpenBSD OpenSSH 클라이언트를 제공하는 OpenBSD OpenSSH 서버가 작동하지 않으면 SSHFP가 구현 된대로 깨져서 OpenBSD 포럼으로 이동하여 버그 보고서를 제출할 것입니다. 나는 여전히 분명한 것을 놓치고 있으며 유용한 답변이 주말을 절약 할 수 있기를 바라고 있습니다.
ssh
하려는 호스트 이름과 일치하지 않는 DNS 레코드로 인해 혼란스러워 보입니다 .
www.test.us
?