![PubkeyAcceptedKeyTypes 和 ssh-dsa 密钥类型](https://linux22.com/image/1463493/PubkeyAcceptedKeyTypes%20%E5%92%8C%20ssh-dsa%20%E5%AF%86%E9%92%A5%E7%B1%BB%E5%9E%8B.png)
我正在尝试测试尝试按键的顺序。系统的一个用户正在使用 DSA,所以我尝试将其作为一个选项进行测试。我得到了Bad key types
。
$ ssh -vv -p 1522 [email protected]
OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /Users/jwalton/.ssh/config
/Users/jwalton/.ssh/config line 2: Bad key types 'ssh-ed25519,ecdsa-sha2-nistp256,ssh-dsa,ssh-rsa'.
我把范围缩小到ssh-dsa
根据ssh_config(5)
(它实际上是的一部分,但在 OpenSSH 7.0 发行说明中将sshd_config(5)
其列为新功能):ssh_config
The -Q option of ssh(1) may be used to list supported key types.
但是,我似乎无法让它工作:
riemann::~$ ssh -Q
/usr/local/bin/ssh: option requires an argument -- Q
riemann::~$ ssh -Q dsa
Unsupported query "dsa"
riemann::~$ ssh -Q ssh-dsa
Unsupported query "ssh-dsa"
riemann::~$ ssh -Q ed25529
Unsupported query "ed25529"
riemann::~$ ssh -Q ssh-ed25529
Unsupported query "ssh-ed25529"
riemann::~$ ssh -Q PubkeyAcceptedKeyTypes
Unsupported query "PubkeyAcceptedKeyTypes"
如何使用这个ssh -Q
选项?
ssh-dsa 的密钥类型是什么?
答案1
阅读手册页应该可以帮助您:
-Q cipher | cipher-auth | mac | kex | key | protocol-version
查询
ssh
对于指定版本 2 支持的算法。可用的功能包括:(cipher
支持的对称密码)、cipher-auth
(支持的支持认证加密的对称密码)、mac
(支持的消息完整性代码)、kex
(密钥交换算法)、key
(密钥类型)和protocol-version
(支持的 SSH 协议版本)。
打电话ssh -Q key
就能得到你想要的东西:
ssh -Q key
ssh-ed25519
[email protected]
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
这是 openssh-7.0 中的新功能,因此请记住它不必在旧版本中运行。
ssh-dsa
密钥类型为ssh-dss
,并且在此版本中默认处于禁用状态。
答案2
作为参考,unix.stackexchange.com 上发布的答案帮助我们解决了这个问题:
新版 openssh (7.0+) 弃用了 DSA 密钥,默认情况下不使用 DSA 密钥(服务器或客户端上均不使用)。不再推荐使用这些密钥,因此如果可以,我建议尽可能使用 RSA 密钥。
如果你确实需要使用 DSA 密钥,则需要在客户端配置中明确允许使用
PubkeyAcceptedKeyTypes +ssh-dss 应该足以将该行放入 ~/.ssh/config,因为详细消息试图告诉您。