다음은 내 콘솔의 예입니다. 다른 콘솔에서 했던 것처럼 지문이 어딘가에 있는지 확인하고 싶습니다. 현재 Linux용 Windows 하위 시스템을 통해 Ubuntu를 사용하고 있습니다. 열쇠를 받고 싶은 호스트 목록이 많이 있습니다. 그들 중 일부는 작동하고 일부는 작동하지 않습니다.
user@user:/homedir$ ssh-keyscan -H hostname
# hostname:22 SSH-2.0-9.99 sshlib
# hostname:22 SSH-2.0-9.99 sshlib
# hostname:22 SSH-2.0-9.99 sshlib
# hostname:22 SSH-2.0-9.99 sshlib
# hostname:22 SSH-2.0-9.99 sshlib
-v를 사용하여 디버그 로그를 가져오면 출력은 다음과 같습니다.
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: (no match)
debug1: no match: 9.99 sshlib
성공적인 키 스캔은 다음과 같습니다.
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256 compression: none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(2048<8192<8192) sent
debug1: got SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: got SSH2_MSG_KEX_DH_GEX_REPLY
hostname ssh-rsa AAAAB...etc
클라이언트(FileZilla)를 사용하여 서버에 연결하면 성공하고 ssh-dss 1024 호스트 키가 반환됩니다. 동일한 호스트 키를 얻기 위해 ssh-keyscan을 사용하고 싶습니다.
~에서우분투 문서, ssh-keyscan이 찾는 기본 키 유형은 rsa이므로 사용자는 해당 특정 호스트에 대한 ssh-dss 키를 얻으려면 dsa를 지정해야 합니다.
-t 유형:
Specifies the type of the key to fetch from the scanned hosts. The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa”, “ed25519”, or “rsa” for protocol version 2. Multiple values may be specified by separating them with commas. The default is to fetch “rsa”, “ecdsa”, and “ed25519” keys.
따라서 키를 찾을 수 없는 경우에는 다음과 같이 작동합니다.
ssh-keyscan -t dsa hostname
당신이 할 수 있는 모든 것을 시도하고 싶다면:
ssh-keyscan -T 20 -t dsa, rsa1, rsa, ecdsa, ed25518 hostname
시간이 오래 걸릴 수 있으므로 20초로 더 긴 제한 시간을 지정하세요. 연결을 시도하는 많은 호스트에서는 여전히 작동하지 않으므로 여전히 답변이 없습니다.