Fedora 30 上使用 OpenSSH 8.0(使用 ssh-dss)的 SSH 连接问题,仍然要求输入带有公钥设置的密码

Fedora 30 上使用 OpenSSH 8.0(使用 ssh-dss)的 SSH 连接问题,仍然要求输入带有公钥设置的密码

我已经在网上做了一些研究,最好的解决方案似乎是使用更好的算法来生成新的密钥对。但目前我仍然需要使用 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

以下是我目前已完成工作的清单:

  • 创建一个带密码的用户(有些帖子说可能需要密码)
  • 创建.ssh文件夹,设置公钥.ssh/authorized_keys,确保它们具有700,600权限和正确所有者(而不是root)。
  • 检查/etc/ssh/sshd_config,确保我们有PubkeyAuthentication yes(通常是默认值)
  • 明确启用ssh-dss
    • PubkeyAcceptedKeyTypes +ssh-dss/etc/ssh/sshd_config服务器上添加
    • PubkeyAcceptedKeyTypes +ssh-dss~/.ssh/config服务器端和客户端都添加
  • 重新启动 sshd 服务以应用新的更改

然而,我仍被要求输入密码。

  • 检查一下/var/log/secure,我看到了:

userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes

  • 查看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]

看起来它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]

答案1

我在 RHEL 8.0 中遇到了同样的问题,最初我采用了相同的方法,将 添加到PubkeyAcceptedKeyTypes=+ssh-dss/etc/ssh/sshd_config但仍然不起作用。然后我意识到/etc/ssh/ssh_host_dsa_key不存在,所以我创建了 ,但仍然没有成功。

然后我发现有关 RHEL 8 系统范围加密策略的文档,它一开始就解释了LEGACY策略级别允许 DSA 算法。事实上,要使使用 DSA 密钥的 SSH 公钥身份验证正常工作(即使没有重新启动sshd),只需要

$ update-crypto-policies --set LEGACY

请注意,这也会削弱其他几个安全方面。我不在乎,因为无论如何,这是一个短暂的测试系统。

答案2

我最近从 Fedora 28 升级到 Fedora 31,遇到了同样的问题。不知道为什么,但我遇到了完全相同的问题。它告诉我,在完成密钥后,密钥算法就在那里-Q。有一次,我似乎已经克服了那个错误,但后来没有得到密钥交换算法,也不知道我需要什么 DSA。

最后我决定升级到 512 位 ECDSA,这对我来说似乎有效。我知道这对你没有帮助,因为你可能有成千上万的用户都在使用旧证书,但我要让你知道,你并不是唯一一个遇到这个问题的人。

尽管 OpenSSH 文档说你可以降级,但我现在想知道 OpenSSH 版本 8 是否真的如此。版本 7 肯定支持它,因为这是我在上次升级之后和升级到版本 31 之前所做的。

相关内容