Ubuntu 22.04 LTS:SSH 失败,显示“sign_and_send_pubkey:签名失败:代理拒绝操作”

Ubuntu 22.04 LTS:SSH 失败,显示“sign_and_send_pubkey:签名失败:代理拒绝操作”

我认为我的问题说明了我不理解sshssh-agent和之间的关系gnome-keyring,但我已经尝试了针对类似问题建议的所有修复方法,但仍然出现了意想不到的行为。

我的目录中有两个密钥对~/.ssh,一个 2048 位 RSA 密钥和一个 ED25519 密钥。我相信~/.ssh目录和密钥文件具有正确的权限:

drwx------  2 tcquinn tcquinn 4096 Feb 23 11:00 .
-rw-------  1 tcquinn tcquinn  484 Dec  8 14:24 id_ed25519
-rw-r--r--  1 tcquinn tcquinn  113 Dec  8 14:24 id_ed25519.pub
-rw-------  1 tcquinn tcquinn 1852 Dec 10 09:15 id_rsa
-rw-r--r--  1 tcquinn tcquinn  398 Jul 16  2020 id_rsa.pub

当我启动操作系统(Ubuntu 22.04 LTS)时,两个密钥都已添加到ssh-agent,至少从ssh-add -lssh-add -L显示两个密钥的信息的意义上来说。

然而,当我尝试ssh连接到一台只有 RSA 密钥的机器时~/.ssh/authorized_keys,我收到了消息

sign_and_send_pubkey: signing failed for RSA "/home/[USERNAME]/.ssh/id_rsa" from agent: agent refused operation

然后系统提示我输入密码(我不想使用)。

因为 RSA 密钥已经添加到ssh-agent,所以我希望无需进一步提示即可登录。

一些类似问题的答案建议完全gnome-keyring从系统中删除,这似乎……太激烈了?

如果相关的话:

(1)如果我systemctl使用 查看日志journalctl -f,当我尝试 时ssh,我会看到以下消息:

Feb 28 17:34:47 [MACHINE_NAME] gnome-keyring-daemon[2099]: the /usr/bin/ssh-add command failed: Child process exited with code 1

(2)如果我要求ssh使用来获取详细输出ssh -vvv,则输出的相关片段似乎如下:

debug1: Offering public key: /home/[USERNAME]/.ssh/id_rsa RSA SHA256:[HASH] agent
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: /home/[USERNAME]/.ssh/id_rsa RSA SHA256:[HASH] agent
debug3: sign_and_send_pubkey: using publickey with RSA SHA256:[HASH]
debug3: sign_and_send_pubkey: signing using rsa-sha2-512 SHA256:[HASH]
sign_and_send_pubkey: signing failed for RSA "/home/[USERNAME]/.ssh/id_rsa" from agent: agent refused operation

(3)如果我随后“手动”将密钥添加到ssh-agent使用中ssh-add(不带任何参数),系统会提示我输入密钥上的密码,它会成功添加它们两个,然后我就可以在ssh不提示输入密码的情况下按照预期进行操作。

(4) 启动后,如果我尝试连接到文件ssh中包含 ED25519 密钥的机器~/.ssh/authorized_keys,它会立即连接而无需提示输入密码,这符合预期。

相关内容