无法从 ssh-agent 中删除密钥。即使重新启动也无济于事

Sea*_*ean 18 ssh ssh-agent

不久前,我注意到我的 ssh-agent 中有三个我无法删除的键。 ssh-add -l显示三个键;我跑了ssh-add -D,然后被告知“所有身份都已删除。”;但随后立即ssh-add -l显示了相同的三个键。

如果我注销然后重新登录,密钥仍然存在。如果我重新启动机器,密钥仍然存在。如果我删除 中的密钥环目录/tmp,我将无法再连接ssh-agent,但是在注销并重新登录后,密钥又回来了。他们是无懈可击的。

据我所知,钥匙是我的,不是别人的。我可以通过他们访问我通常的本地服务。但是,当我再次添加其中一个密钥时ssh-add,给出私钥文件的路径,新密钥在以下输出中具有不同的外观ssh-add -l

2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f /home/jruser/.ssh/jruser-keyname-20110418 (RSA)
Run Code Online (Sandbox Code Playgroud)

对比原版:

2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f jruser 04/18/2011 keyname (RSA)
Run Code Online (Sandbox Code Playgroud)

有没有办法合理地解释这种行为?我想真的有两个问题:

  1. 即使在重新启动后,如何设法保留密钥?我的基本知识ssh表明密钥总是必须手动添加。

  2. 为什么ssh-agent -D要在删除身份时对我撒谎?

小智 11

看起来它可能是一个错误。我在 Ubuntu 10.10 中有类似的行为。谷歌搜索发现 Debian 的错误报告:http : //bugs.debian.org/cgi-bin/bugreport.cgi? bug= 472477

为了删除我显示的额外密钥,我只是将它们移出了 ~/.ssh 目录。

  • 终于放下心来调查了。罪魁祸首是 gnome-keyring-daemon,它 a) 自动加载 ~/.ssh 中的所有密钥,b) 拒绝放弃它们。解决方案是让 gnome-keyring-manager 永远不会启动,这很奇怪,最终通过删除程序文件的执行权限来实现。 (3认同)
  • 现在已经是 2018 年了,这仍然具有现实意义。必须将密钥移出 ~/.ssh (2认同)