3개의 머신이 있습니다: A(B와 C에 연결하는 곳), B, C.
B와 C는 동일한 SSHD 호스트 키를 가지고 있습니다(복사되었으므로 100% 동일하며 SSHD도 다시 시작되었습니다) , 동일한 sshd_config 파일).
C에서 Known_hosts 파일은 다음과 같습니다.
C:~/.ssh # grep B *
C:~/.ssh # grep A *
known_hosts:ssh-rsa xxxx...xxxx
C:~/.ssh #
C에서 A로 연결을 시도하면 "A"는 RSA 호스트 키를 제공합니다.
C에서 B로 연결을 시도하면 "B"는 ECDSA 호스트 키를 제공합니다.
질문:왜? "A"와 "B" 서버가 RSA SSHD 호스트 키를 모두 제공해야 하는 것이 논리적이지 않습니까?
답변1
호스트 키를 처음 학습할 때는 ECDH/ECDSA 키가 선호됩니다. 호스트 C는 이미 호스트 A의 RSA 키를 알고 있으므로 이를 계속 사용합니다. 그러나 호스트 C는 호스트 B의 키에 대해 아무것도 모르기 때문에 ECDH/ECDSA가 사용됩니다.
(제가 참고한5.7 릴리스 노트, ECDH/ECDSA가 도입되었을 때).
내가 받은 질문: 두 키가 모두 필요합니까? 그렇죠. 모든 SSH 설치가 ECDSA를 지원하는 것은 아니므로 RSA가 필요합니다. (예를 들어 퍼티는 아직 ECDSA를 수행하지 않습니다) ECDSA만 있으면 어떻게 되나요? 누가 당신에게 연락을 시도하는지에 따라 다릅니다. ECDSA를 지원하면 모든 것이 예상대로 작동합니다. 그렇지 않으면 일종의 실패를 겪게 될 것입니다. 어느 것이 더 낫습니까? 개인적으로 모르겠습니다. ECDSA는 더 적은 마력을 필요로 하므로 구형 하드웨어에서 더 빠르게 작동합니다. 그리고 OpenSSH는 RSA보다 이를 선호하므로 개발자는 ECDSA가 더 좋다고 생각하는 것 같습니다.
답변2
연결하려는 서버가 동일한 버전 /etc/ssh/sshd_config
및/또는 OpenSSH(및 OpenSSL) 버전을 갖고 있습니까(동일한 구성에 대한 부분과 연결하는 위치가 약간 모순되는 것 같습니다)? ECDH/ECDSA는 OpenSSH 5.7p1에 도입되었으므로 한 서버가 오래된 경우 키 파일을 무시합니다.