我认为我的问题说明了我不理解ssh
、ssh-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 -l
和ssh-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
,它会立即连接而无需提示输入密码,这符合预期。