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

无法从 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)

与原版相比:

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

有什么方法可以合理地解释这种行为吗?我想实际上有两个问题:

  1. 如何在重启后保留密钥?ssh根据我的基本知识,密钥必须始终手动添加。

  2. 为什么要ssh-agent -D骗我删除身份?

答案1

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

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

答案2

您的密钥以文件形式存储在隐藏目录中:/home/jruser/.ssh/,这就是它们在重启后仍然存在的原因。我猜是 ssh-add -D 将它们从内存中删除,但当您重启时,它们会从 .ssh 目录中读取,因此您又可以拥有它们了。

相关内容