从 18.04 升级到 22.04 后,无密码 SSH 不起作用

从 18.04 升级到 22.04 后,无密码 SSH 不起作用

从 Ubuntu 18.04 升级到 Ubuntu 22.04 后,无密码 SSH 不起作用。客户端是 Ubuntu 22.04,服务器是 Ubuntu 14.04。使用 Ubuntu 18.04 作为客户端可以正常工作。

我已经按照正确的步骤生成 .ssh 中的密钥并将其复制到服务器,但在 Ubuntu 22.04 中它不起作用

我一直执行并且一直努力的步骤总结:

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh -p 1331 user@server 'cat >> .ssh/authorized_keys'

这是 Seahorse 的问题吗?在 Ubuntu 22.04 的 Seahorse 中,我找不到“此密钥的所有者有权连接到此计算机”选项,如果是在 18.04 中。我不知道这是否与此有关

这有发生在其他人身上吗?

答案1

RSA SHA-1 哈希算法正在迅速被弃用。有一种解决方法可以重新启用 RSA,网址为SSH-RSA 密钥被拒绝,并显示“无相互签名算法”消息

为了彻底解决此问题,我们的团队建议使用受支持且更安全的算法(例如 ECDSA 和 ED25519)重新生成这些已弃用的 SSH 密钥。使用 ECDSA 或 ED25519 算法生成的 SSH 密钥不受 RSA 弃用的影响。

/etc/ssh/ssh_config在客户端添加以下行:

PubkeyAcceptedKeyTypes +ssh-rsa

答案2

更新:我建议尝试下面的命令行来查看所建议的配置更改是否真正起作用,这样,只有在您已经检查过它们是否起作用的情况下,才会进行配置更改。

总结-如果您在连接机器(例如)时遇到此问题,请将这些行添加到 ssh 配置文件(个人配置文件通常在.ssh/config或系统范围配置文件中) ,/etc/ssh/ssh_configalice.example.combob.example.org

Host alice.example.com bob.example.org
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

或者更详细地讲:

Ubuntu 和 Linux 上的 SSH 通常指的是 OpenSSH,但 OpenSSH 现已弃用(并且禁用默认情况下,RSA SHA-1 算法。它仍然可用,但必须为需要它的主机启用,请参阅他们的解释者

当 SSH 客户端连接到服务器时,双方都会向对方提供连接参数列表...为了成功连接,每个参数必须至少有一个相互支持的选择。

为了能够连接到存在此问题的主机,需要上述一个或两个选项(建议升级主机,以便它们不再需要使用这种现在被认为不安全的算法)。在某些情况下,您可能需要为所有主机启用这些选项(Host *)。

当您尝试连接到计算机时,如果看到此错误消息,

Unable to negotiate with ... port 22: no matching host key type found. Their offer: ssh-rsa

可以修复HostkeyAlgorithms +ssh-rsa

当您尝试连接到计算机时,如果看到此错误消息,

[email protected]: Permission denied (publickey).

可以修复PubkeyAcceptedAlgorithms +ssh-rsa

把它们放在一起会得到这样的一个节(在本例中是针对 2 台机器的),

Host alice.example.com bob.example.org
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

您需要将该节添加到个人 .ssh 配置文件中(如果不存在则创建它),通常位于.ssh/config您的主目录下,或者如果您希望机器上的任何用户都拥有这些设置,请将该节添加到/etc/ssh/ssh_config

如果你不想进行任何配置更改,则可以在命令行上指定选项,

ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa some.hostname

最后要注意的是,PubkeyAcceptedAlgorithms关键字取代了PubkeyAcceptedKeyTypes一些答案中提到的关键字(参见变更日志

答案3

/etc/ssh/ssh_config如果您想要为所有用户添加此配置,或者~/.ssh/config想要将其添加到您自己的用户,则可以添加以下行。

主机密钥算法 +ssh-rsa

答案4

做这个:

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/(your key filename)

然后测试:

$ ssh -T [email protected]

已经好了。

相关内容