为什么 gnome-keyring-daemon 需要公钥来缓存密码?

为什么 gnome-keyring-daemon 需要公钥来缓存密码?

我有两台几乎相同的 Arch Linux 机器设置,都在运行/usr/bin/gnome-keyring-daemon --daemonize --login。它们都有相同的 SSH 密钥,但只有其中之一拥有公钥。在具有公钥的主机上,GNOME 密钥环守护程序工作正常 - 我可以通过 SSH 连接到其他计算机,而不会出现任何预期的提示。在主机上没有公钥似乎是 GNOME 密钥环忽略我已经输入的密码,并且每次都会提示我:

$ ls ~/.ssh/id_rsa.pub
ls: cannot access /home/user/.ssh/id_rsa.pub: No such file or directory
$ ssh some-host exit
Enter passphrase for key '/home/user/.ssh/id_rsa':
$ ssh other-host exit
Enter passphrase for key '/home/user/.ssh/id_rsa':

它也是没有列出身份,即使输入密码后:

$ ssh-add -l
The agent has no identities.

凭直觉复制公钥后,我不再提示输入密码。随后再次删除公钥后,症状又回来了。这种行为是否有原因,或者只是一个错误?

答案1

来自 GNOME 密钥环文档SSH 代理页面:

SSH 代理会自动加载 ~/.ssh 中的文件,这些文件具有相应的 *.pub 配对文件。可以通过 ssh-add 命令手动加载和管理其他 SSH 密钥。

id_rsa因此,仅当存在相应的密钥环时才会加载 GNOME 密钥环id_rsa.pub

您可以ssh-keygen使用私钥文件生成一个

ssh-keygen -y -f id_rsa  > id_rsa.pub

如果您不希望 GNOME 密钥环id_rsa自动加载,则必须删除id_rsa.pub

我找不到任何技术原因来解释为什么选择这个约定,但这不是一个错误。

相关内容