如何删除一个SSH密钥?
我目前在服务器上上传了一个旧的SSH密钥。 问题是我失去了我的~/.ssh目录(与原始的id_rsa和id_rsa.pub文件)。 
因此,我想直接在服务器上删除旧的SSH密钥,并上传一个新的。
我尝试了下面的命令没有成功:
 $> ssh-add -D 

有没有办法彻底删除SSH密钥?
 请注意, ssh-add -d/-D至less有两个错误报告不会删除密钥: 
-   “ Debian Bug report#472477: ssh-add -D不会从gnome-keyring-daemon内存中删除SSH密钥 ”
-   “ Ubuntu: ssh-add -D删除所有身份不起作用,为什么所有的身份都自动添加?
确切的问题是:
ssh-add -d/-D只从gnome-keyring 手动添加密钥。
没有办法删除自动添加的键。
这是原来的错误,而且还是存在的。所以,举例来说,如果你有两个不同的自动加载的ssh身份与两个不同的GitHub账户相关联 – 比如说工作和家庭 – 就没有办法在他们之间切换。 GitHubtakes第一个匹配,所以你总是作为你的“家”用户GitHub,没有办法上传东西到工作项目。
允许
ssh-add -d应用于自动加载的密钥(和ssh-add -t X以更改自动加载的密钥的生存期),可以恢复大多数用户所期望的行为。
更确切地说,关于这个问题:
罪魁祸首是
gpg-keyring-daemon:
- 它颠覆了ssh-agent的正常运行,主要是为了能够popup一个漂亮的方框,你可以在其中键入一个encryption的ssh密钥的密码。
- 它通过你的
.ssh目录,并自动添加find你的代理的任何密钥。- 它不会让你删除这些键。
我们怎么恨这个? 让我们不要指望的方式 – 生活太短。
由于较新的ssh客户端在连接到主机时会自动尝试ssh-agent中的所有密钥,所以失败是复杂的。
如果太多,服务器将拒绝连接。
而且由于gnome-keyring-daemon自己决定了你希望你的ssh-agent拥有多less个密钥,并且自动加载了它们,而且不会让你删除它们,所以你就干了。
最近两天前(2014年8月21日),Ubuntu 14.04.4中仍然确认了这个错误,
可能的解决方法:
- 做
ssh-add -D删除所有手动添加的密钥。 这也locking了自动添加的键,但没有多大用处,因为gnome-keyring会在你尝试执行git push时候要求你解开它们。- 导航到您的
~/.ssh文件夹,并将您想要识别的所有密钥文件移至另一个名为backup的文件夹中。 如有必要,您也可以打开海马并从那里删除钥匙。- 现在你应该可以做到没有问题的
git push。
另一个解决方法:
你真正想要做的是完全closures
gpg-keyring-daemon。
进入System --> Preferences --> Startup Applications,并取消select“SSH Key Agent (Gnome Keyring SSH Agent)”框 – 你需要向下滚动才能find它。你仍然会得到一个
ssh-agent,只有现在它会performance得很好:没有键自动加载,你运行ssh-add来添加它们,如果你想删除键,你可以。 想象一下。
这个意见实际上表明:
解决的办法是保持
gnome-keyring-manager永远不会启动,这很难通过删除程序文件的执行权限来实现。
 除非我误解,否则在本地计算机上丢失了包含您的私钥的.ssh目录,因此您要删除服务器上的公钥,并允许使用基于密钥的login。 在这种情况下,它将被存储在服务器的主目录中的.ssh/authorized_keys文件中。 你可以用文本编辑器编辑这个文件,如果你能识别它,删除相关的行(如果它是唯一的条目就更容易了)。 我希望这个键不是你访问服务器的唯一方法,而且你还有其他一些login和编辑文件的方式。 您可以手动将新的公钥添加到authorised_keys文件或使用ssh-copy-id 。 无论采用哪种方式,您都需要在服务器上为您的帐户设置密码validation,或者使用其他身份或访问方法来访问服务器上的authorized_keys文件。 
  ssh-add为您的ssh代理添加身份,ssh代理在本地处理您的身份pipe理,“与代理的连接通过SSH远程login进行转发,因此用户可以安全地使用networking中任何位置的身份“。  (手册页),所以我不认为这是你想要在这种情况下。 据我所知,如果没有通过sshlogin访问服务器,就无法将公钥存入服务器。 
最简单的方法是
 ssh-keygen -R hostname 
我在Unity中打开了“密码和密钥”应用程序,并从安全密钥 – > OpenSSH密钥中删除了不需要的密钥,而且它们也自动从ssh-agent -l中删除。