web-dev-qa-db-ja.com

ssh-keyscanはDSAssh-dssキーを明らかにしません

Ssh-keyscanを使用して、いくつかのSSHサーバーの公開鍵を取得しています。私のアプライアンスの1つは、DSA/ssh-dssのみをサポートしています。 「-tdsa」オプションを指定したssh-keyscanは公開鍵を取得できませんが、Nmapスクリプトssh-hostkeyは実際に公開鍵を取得できます。

ssh-keyscan:

weberjoh@nb15-lx:~$ ssh-keyscan -t dsa ssg-mgmt
# ssg-mgmt:22 SSH-2.0-NetScreen

Nmap:

weberjoh@nb15-lx:~$ nmap --script ssh-hostkey ssg-mgmt

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-11 16:00 CEST
Nmap scan report for ssg-mgmt (192.168.120.3)
Host is up (0.0026s latency).
rDNS record for 192.168.120.3: ssg-mgmt.webernetz.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
| ssh-hostkey:
|_  1024 e7:5b:c9:a9:60:60:66:37:d6:90:bd:70:8f:76:e5:41 (DSA)
443/tcp open  https

Nmap done: 1 IP address (1 Host up) scanned in 7.28 seconds

Ssh-keyscanを使用してDSA公開鍵を表示するにはどうすればよいですか?

2
Johannes Weber

これは、OpenSSHの新しいバージョンが原因である可能性があります デフォルトではDSAをサポートしていません 。クライアントマシンで、~/.ssh/configに次を追加してみてください。

PubkeyAcceptedKeyTypes=+ssh-dss

また、DSAキー 安全性が低い可能性があります であることに注意してください。したがって、可能であれば、サーバー上でそれらを置き換えることを検討する必要があります。

1
Andrei Savin

Ssh-keyscanが〜/ .ssh/configに従わず、オプションも使用しない場合の回避策を次に示します。

$ ssh -o UserKnownHostsFile=junk -o KexAlgorithms=+diffie-hellman-group1-sha1 192.168.1.2
The authenticity of Host '192.168.1.2 (192.168.1.2)' can't be established.
RSA key fingerprint is SHA256:iCnx+DQCcb4rAfNEE71mDiFc+ej9X+XBzBd/5/ueDtE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (RSA) to the list of known hosts.
root@router:~# ^D
Connection to 192.168.1.2 closed.
$ cut -d' ' -f2- < junk > junk2
$ ssh-keygen -r 192.168.1.2 -f junk2
192.168.1.2 IN SSHFP 1 1 28.....17
192.168.1.2 IN SSHFP 1 2 882....ed1
$ rm -f junk junk2

そして

ssh -o UserKnownHostsFile=junk -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=ssh-dss 192.168.1.2

rSAの代わりにDSAを強制したい場合。

そして私たちの間の怠惰な人のために:

h=192.168.1.2; for t in ssh-rsa ssh-dss ssh-ed25519 ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521; do ssh -o CheckHostIp=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=junk -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms="${t}" "${h}" true && cut -d' ' -f2- < junk > junk2 && ssh-keygen -r "${h}" -f junk2; rm -f junk junk2; done

これは以下を生成します:

Warning: Permanently added '192.168.1.2' (RSA) to the list of known hosts.
192.168.1.2 IN SSHFP 1 1 28...17
192.168.1.2 IN SSHFP 1 2 882...ed1
Warning: Permanently added '192.168.1.2' (DSA) to the list of known hosts.
192.168.1.2 IN SSHFP 2 1 40..3c
192.168.1.2 IN SSHFP 2 2 26f...e6f
Unable to negotiate with 192.168.1.2 port 22: no matching Host key type found. Their offer: ssh-rsa,ssh-dss
...
0
MaZe