如何删除一个SSH密钥?

我目前在服务器上上传了一个旧的SSH密钥。 问题是我失去了我的~/.ssh目录(与原始的id_rsaid_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

另一个解决方法:

你真正想要做的是完全closuresgpg-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中删除。