对于 OpenSSH 旧版硬件访问,仅当命令行中包含 -oHostkeyAlgorithms=+ssh-rsa 时,才将 ssh-rsa 用作首选主机密钥算法

对于 OpenSSH 旧版硬件访问,仅当命令行中包含 -oHostkeyAlgorithms=+ssh-rsa 时,才将 ssh-rsa 用作首选主机密钥算法

该连接适用于 WD MyCloud [OS3],仅限本地网络,因为云访问已关闭。 sshd_config 包含:

HostKeyAlgorithms=ssh-rsa,[email protected]
PubkeyAcceptedAlgorithms=+ssh-rsa,[email protected]

但 OpenSSH_8.8p1 的详细日志报告:

debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],rsa-sha2-512,rsa-sha2-256

...

debug1: kex: algorithm: ecdh-sha2-nistp256
debug1: kex: host key algorithm: (no match)
Unable to negotiate with 'hostIP' port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

仅当在命令行上提供 -oHostkeyAlgorithms=+ssh-rsa 时,日志才会显示:

debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa

...

debug1: kex: algorithm: ecdh-sha2-nistp256
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: aes128-ctr MAC: [email protected] compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: [email protected] compression: none

...

debug1: Next authentication method: password

连接成功。最终,我需要从 rSYNC 调用 ssh。尽管 rSYNC 确实允许 ssh 选项,但我在 ssh 文档中没有找到任何内容来解释为什么配置文件无法处理此问题。

答案1

首先,您应该了解此选项的作用以及为什么必须指定它。传统ssh-rsa算法ssh-dsa使用 SHA-1 进行签名,无论是使用 RSA 还是使用 DSA。 SHA-1 目前被认为非常弱,并且已经对其进行了实际攻击。此外,OpenSSH 中的 DSA 仅限于 1024 位密钥,这无法提供足够的 80 位安全级别(128 位是最低推荐级别)。

因此,OpenSSH 已禁用这些算法,因为它们不安全,如果您使用它们,则无法保证连接的安全性。如果可能,您应该将设备上的固件升级到应用了适当补丁的较新版本。无论如何你都应该这样做,因为如果 SSH 服务器的版本很旧,它可能还会存在其他安全问题。

如果你确实无法升级并且必须继续使用它,那么你可以在你的~/.ssh/config.假设IP为192.0.2.3,则可以这样写:

Host 192.0.2.3
    HostKeyAlgorithms +ssh-rsa

然后,当rsync通过这个IP调用ssh时,它应该正确设置算法。如果您使用主机名而不是 IP,请在Host指令中使用该主机名。

相关内容