Take the 2-minute tour ×

A short time ago I noticed that there were three keys in my ssh-agent that I could not delete. ssh-add -l showed three keys; I ran ssh-add -D, and was told "All identities removed."; but then an immediate ssh-add -l showed the same three keys.

If I log out and then back in, the keys are still there. If I reboot the machine, the keys are still there. If I delete the keyring directory in /tmp, I can't connect to ssh-agent any more, but upon logging out and back in, the keys are back. They are invulnerable.

The keys are mine, not anyone else's, as far as I can tell. I can access my usual local services with them. But when I add one of the keys again with ssh-add, giving the path to a private key file, the new key has a different appearance in the output of 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)

vs. the original:

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

Is there any way to sensibly account for this behavior? I guess there are really two questions:

  1. How do the keys managed to be retained even across reboots? My basic knowledge of ssh suggests that keys always have to be added manually.

  2. Why does ssh-agent -D lie to me about removing identities?

share|improve this question

2 Answers 2

up vote 7 down vote accepted

It looks like it might be a bug. I am having similar behavoir in Ubuntu 10.10. A google search found a bug report for Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472477

To remove the extra keys I had showing, I just moved them out of the ~/.ssh directory.

share|improve this answer
Yes! This works for me. Thanks! I use Debian Wheezy beta 4. –  Tarrasch Mar 12 '13 at 1:03
Finally buckled down and investigated. The culprit is gnome-keyring-daemon, which a) automatically loads all keys in ~/.ssh, and b) refuses to relinquish them. The solution is to keep gnome-keyring-manager from ever starting up, which was strangely difficult by finally achieved by removing the program file's execute permission. –  Sean May 25 '13 at 20:25

Your keys are stored as files in the hidden directory: /home/jruser/.ssh/ that's how they persist after reboots. My guess the is that ssh-add -D is deleting them from memory but when you reboot they are read from the .ssh directory and so you have them again.

share|improve this answer
But ssh-add -D is NOT deleting them from memory. It has no effect at all. –  Sean May 9 '11 at 22:14

Your Answer


