Zhi*_*ang 2 linux security fedora ssh openssh
我已经在网上做了一些研究,最好的解决方案似乎是使用更好的算法来生成新的密钥对。但现在我仍然需要使用 ssh-dss 密钥对进行内部自动化。
(我知道从openssh 7.0开始,ssh-dss默认是禁用的,我们需要显式添加
PubkeyAcceptedKeyTypes +ssh-dss到ssh配置中才能重新启用它。)
环境:
OpenSSH_8.0p1, OpenSSL 1.1.1c FIPS 28 May 2019
Linux hostname 5.1.19-300.fc30.x86_64 #1 SMP Mon Jul 22 16:32:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所做的事情的清单:
.ssh文件夹,在 中设置公钥.ssh/authorized_keys,确保它们具有 700、600 权限和正确的所有者而不是 root。/etc/ssh/sshd_config,确保我们有PubkeyAuthentication yes(通常是默认值)ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss上添加/etc/ssh/sshd_configPubkeyAcceptedKeyTypes +ssh-dss在服务器端~/.ssh/config和客户端都添加但是,我仍然被要求输入密码。
/var/log/secure,我看到:
userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes
ssh -Q key:ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
Run Code Online (Sandbox Code Playgroud)
看起来应该ssh-dss已经在列表中了,为什么当使用私钥文件进行 ssh 时我仍然看到该错误?
/var/log/secure将 ssh 日志级别设置为后,我没有得到更多信息VERBOSE:
Jul 28 18:40:44 re-pkg-fedora30 sshd[1374]: Connection from 10.32.34.60 port 63863 on 10.140.143.132 port 22
Jul 28 18:40:44 re-pkg-fedora30 sshd[1374]: Failed publickey for mambop from 10.32.34.60 port 63863 ssh2: RSA SHA256:7EgHyu1SFM76cXlMGxHcvqg/C2xqbfbrQCfX5WCnOgc
Jul 28 18:40:44 re-pkg-fedora30 sshd[1374]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]
Jul 28 18:40:45 re-pkg-fedora30 sshd[1374]: Connection closed by authenticating user mambop 10.32.34.60 port 63863 [preauth]
Run Code Online (Sandbox Code Playgroud)
我在 RHEL 8.0 上遇到了同样的问题,最初走了同样的路线,添加PubkeyAcceptedKeyTypes=+ssh-dss到/etc/ssh/sshd_config,但它仍然不起作用。然后我意识到它/etc/ssh/ssh_host_dsa_key不存在,所以我创建了它,但仍然没有成功。
然后我找到了有关 RHEL 8 系统范围加密策略的文档,该文档一开始就解释了LEGACY策略级别允许 DSA 算法。事实上,使用 DSA 密钥进行 SSH pubkey 身份验证所需的全部工作(即使不重新启动sshd)是
$ update-crypto-policies --set LEGACY
Run Code Online (Sandbox Code Playgroud)
请注意,这也会削弱其他几个安全方面。我不在乎,因为无论如何,这是一个短暂的测试系统。