我有两台几乎相同的 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
我找不到任何技术原因来解释为什么选择这个约定,但这不是一个错误。