是否可以配置 SSH 客户端以使用 RSA/SHA1 签名?

是否可以配置 SSH 客户端以使用 RSA/SHA1 签名?

我已经将我的 OpenSSH 升级到 7.9,现在我通常连接的主机(配置为~/.ssh/config,但甚至包括 Github 操作)正在抱怨这个问题(但仍在连接):

agent key RSA SHA256:[hash] returned incorrect signature type

经过一番搜索,我了解到服务器使用的是旧版本的 OpenSSH (7.4),该版本仅使用 SHA1 签名密钥。由于我无法更新服务器版本,是否可以在本地配置为始终使用 SHA1 签名,这样我就可以跳过那条烦人的消息?

答案1

此错误消息的含义与您想象的略有不同。正如您所注意到的,RSA SSH 密钥可以使用三种哈希算法之一进行签名:SHA-1(最古老的格式,不安全)、SHA-256 和 SHA-512。在这种情况下,您的客户端和服务器同意使用 RSA 和 SHA-256 或 SHA-512。这很好,因为这些选项既强大又安全。

但是,您在系统上使用的 SSH 代理已损坏。它被要求提供使用 SHA-256 或 SHA-512 的签名,但它却返回了使用 SHA-1 的签名。这违反了协议并且不安全。

因此,问题在于您用作 SSH 代理的程序已过期或损坏,您应该更新它。您没有告诉我们您使用的代理程序是什么,或者您在什么操作系统上运行,所以我们很难说。如果您不确定,您可以echo $SSH_AUTH_SOCK在 shell 窗口中运行,有时程序名称就在路径中。

或者,您可以使用以下命令创建不同类型的 SSH 密钥(例如 Ed25519 密钥),ssh-keygen -t ed25519然后使用它进行连接。此密钥类型已经使用安全哈希算法,因此无需担心您的代理提供错误的类型。如果您的代理相对较新,它应该原生支持这种类型的密钥。

最后,您可以使用不同的 SSH 代理:OpenSSH 附带的代理。您只需运行即可eval $(ssh-agent -s)在 shell 窗口中加载它。然后您需要使用 添加密钥ssh-add

相关内容