小编典典

如何删除 SSH 密钥?

all

我目前在服务器上上传了一个旧的 SSH 密钥。问题是我丢失了我的~/.ssh目录(包含原始目录id_rsaid_rsa.pub文件)。

因此,我想直接在服务器上删除旧的 SSH 密钥并上传一个新密钥。

我尝试了以下命令但没有成功:

$> ssh-add -D

在此处输入图像描述

有没有办法完全删除 SSH 密钥?


阅读 98

收藏
2022-06-30

共1个答案

小编典典

请注意,至少有两个关于ssh-add -d/-D 删除键的错误报告:

确切的问题是:

ssh-add -d/-D仅从 gnome-keyring 中删除 手动添加 的密钥。
无法删除自动添加的密钥。
这是最初的错误,它仍然肯定存在。

因此,例如,如果您有两个不同的自动加载的 ssh 身份与两个不同的 GitHub 帐户相关联——比如工作帐户和家庭帐户——就 无法
在它们之间切换。GitHub 采用第一个匹配的,因此您始终以“家庭”用户的身份出现在 GitHub 上,无法将内容上传到工作项目。

允许ssh-add -d应用到 自动加载的 密钥(并ssh-add -t X更改自动加载的密钥的生命周期),将恢复大多数用户期望的行为。


更准确地说,关于这个问题:

罪魁祸首是gpg-keyring-daemon

  • 它颠覆了 ssh-agent 的正常操作,主要是为了让它弹出一个漂亮的框,您可以在其中输入加密 ssh 密钥的密码。
  • 它会浏览您的.ssh目录,并自动将找到的任何密钥添加到您的代理中。
  • 它不会让你删除这些键。

我们怎么讨厌这个?让我们不要计算方式——生命太短暂了。

由于较新的 ssh 客户端在连接到主机时会自动尝试 ssh-agent 中的所有密钥,因此失败更加复杂。
如果太多,服务器将拒绝连接。
而且由于 gnome-keyring-daemon 已经自行决定了您希望您的 ssh-agent
拥有多少个密钥,并且已经自动加载了它们,并且不会让您删除它们,您就完蛋了。

就在两天前(2014 年 8 月 21 日),这个错误仍然在 Ubuntu 14.04.4 中得到确认


一种可能的解决方法:

  • ssh-add -D删除所有手动 添加 的密钥。这也会锁定自动添加的密钥,但没有多大用处,因为gnome- keyring当您尝试执行git push.
  • 导航到您的~/.ssh文件夹并将您的所有关键文件(您要识别的文件除外)移动到一个名为备份的单独文件夹中。如有必要,您还可以打开
    seahorse 并从那里删除密钥。
  • 现在你应该可以git push毫无问题地做。

另一种解决方法:

您真正想要做的是完全关闭gpg-keyring-daemon
转到System --> Preferences --> Startup Applications,然后取消选择“ SSH Key Agent (Gnome Keyring SSH Agent)”框 - 您需要向下滚动才能找到它。

你仍然会得到一个ssh-agent,只是现在它会正常运行:没有自动加载密钥,你运行 ssh-add 来添加它们,如果你想删除密钥,你可以。设想。

该评论实际上表明:

解决方案是gnome-keyring-manager永远不要启动,这通过删除程序文件的执行权限最终实现了奇怪的困难。


在评论中添加了另一个有趣的极端案例:

万一这对任何人都有帮助:我什至尝试完全删除id_rsaandid_rsa.pub文件,但密钥仍然出现。

原来 gpg-agent 是把它们缓存在一个~/.gnupg/sshcontrol文件中;我不得不从那里手动删除它们。

就像在这里一样添加时就是这种情况keygrip

将您的身份验证子密钥的 keygrip 附加~/.gnupg/sshcontrol到文件中。

gpg -K --with-keygrip是列出所有密钥及其密钥的命令。

2022-06-30