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

Mar*_*rio 16 ssh password 22.04

从 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'
Run Code Online (Sandbox Code Playgroud)

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

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

kar*_*rel 25

RSA SHA-1 哈希算法很快就会被弃用。有一种解决方法可以在SSH-RSA 密钥被拒绝并显示消息“无相互签名算法”时重新启用 RSA 。

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

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

PubkeyAcceptedKeyTypes +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

  • 要在 Ubuntu 22.04.1 LTS 上无密码登录,我必须添加一行:“HostKeyAlgorithms +ssh-rsa”。该条目与上面答案中提到的条目一起放置在“Host *”节的末尾 (3认同)

And*_*rds 6

更新:我建议尝试使用命令行来查看建议的配置更改是否真正有效,这样,只有在您已经检查过配置更改是否有效时,您才会进行配置更改。

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

Host alice.example.com bob.example.org
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

或者更详细地说:

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

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

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

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

Unable to negotiate with ... port 22: no matching host key type found. Their offer: ssh-rsa
Run Code Online (Sandbox Code Playgroud)

可以用以下方法修复HostkeyAlgorithms +ssh-rsa

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

username@some.hostname: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

可以用以下方法修复PubkeyAcceptedAlgorithms +ssh-rsa

将它们放在一起会给你一个像这样的节(在本例中为两台机器),

Host alice.example.com bob.example.org
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

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

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

ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa some.hostname
Run Code Online (Sandbox Code Playgroud)

最后要注意的是,PubkeyAcceptedAlgorithms关键字取代PubkeyAcceptedKeyTypes了一些答案中提到的(请参阅更改日志中的“错误修复”部分)


小智 5

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

主机密钥算法 +ssh-rsa