如何删除ssh密钥?

use*_*743 121 git ssh git-svn ssh-keys ssh-keygen

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

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

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

$> ssh-add -D
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Von*_*onC 107

请注意,至少有两个错误报告ssh-add -d/-D 没有删除密钥:

确切的问题是:

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

因此,例如,如果您有两个不同的自动加载的ssh身份与两个不同的GitHub帐户相关联 - 比如工作和家庭 - 那么就无法在它们之间切换.GitHubtakes匹配的第一个,所以你总是作为GitHub的"主页"用户出现,无法将内容上传到工作项目.

允许ssh-add -d应用于自动加载的键(以及ssh-add -t X更改自动加载的键的生命周期),将恢复大多数用户期望的行为.


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

罪魁祸首是gpg-keyring-daemon:

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

我们怎么讨厌这个?我们不计算方法 - 生命太短暂.

由于较新的ssh客户端在连接到主机时会自动尝试ssh-agent中的所有密钥,因此故障更加复杂.
如果太多,服务器将拒绝连接.
因为gnome-keyring-daemon自己决定了你希望你的ssh-agent拥有多少个密钥,并自动加载它们,并且不会让你删除它们,你就是干杯.

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


可能的解决方法:

  • 难道ssh-add -D要删除所有手动添加键.这也锁定了自动添加的键,但没有多大用处,因为gnome-keyring当你尝试做时,它会要求你解锁它们git push.
  • 导航到您的~/.ssh文件夹,将除您要识别的密钥文件之外的所有密钥文件移动到名为backup的单独文件夹中.如有必要,您也可以打开海马并从那里删除密钥.
  • 现在你应该git push没有问题了.

另一种解决方法:

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

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

这条评论实际上表明:

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

  • Ubuntu 14-16 中的另一个选项是使用 gui“密码和密钥”(您可以搜索 ssh 来找到它)。选择例如 OpenSS 密钥,然后右键单击该密钥并选择删除。您可能需要重新启动系统才能看到它已被删除。 (2认同)
  • 为什么有关“ssh-agent”和“ssh-add”的信息是所选答案?原发帖人说他想`直接在服务器上删除旧的SSH密钥并上传一个新的`。听起来他想在远程主机上编辑`~/.ssh/authorized_keys`。 (2认同)

Jig*_*sar 25

在删除身份之前您需要先使用ssh-agent此命令

eval `ssh-agent -s` 
Run Code Online (Sandbox Code Playgroud)

删除所有身份

ssh-add -D
Run Code Online (Sandbox Code Playgroud)

删除特定身份

ssh-add -d ~/.ssh/sshkeynamewithout.pub
Run Code Online (Sandbox Code Playgroud)

对于使用此命令查找可用标识的列表

ssh-add -l
Run Code Online (Sandbox Code Playgroud)

  • 是否可以删除“ssh-add -l”列出的特定密钥*而不*通过文件名引用它?我有一个 Yubikey,通过“ssh-add -K”将 SSH 密钥添加到代理中,因此它们在“.ssh/”目录中不存在任何文件。 (2认同)

Der*_*ike 9

如果您尝试执行与ssh相关的操作并收到以下错误:

$ git fetch
no such identity: <ssh key path>: No such file or directory
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法从ssh代理中删除丢失的ssh密钥:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 6

除非我误解,否则.ssh您在本地计算机上丢失了包含私钥的目录,因此您希望删除服务器上的公钥,并允许基于密钥的登录.在这种情况下,它将存储在.ssh/authorized_keys服务器上主目录的文件中.您可以使用文本编辑器编辑此文件,如果可以识别它,则删除相关行(如果它是唯一的条目,则更容易!).我希望密钥不是您访问服务器的唯一方法,并且您还有其他一种登录和编辑文件的方法.您可以手动将新公钥添加到authorised_keys文件或使用ssh-copy-id.无论哪种方式,您都需要在服务器上为您的帐户设置密码身份验证,或者使用其他身份或访问方法来访问authorized_keys服务器上的文件.

ssh-add将身份添加到您的ssh代理,该代理在本地处理您的身份管理,并且"通过SSH远程登录转发与代理的连接,因此用户可以安全地使用网络中任何位置的身份提供的权限." (手册页),所以我认为这不是你想要的.据我所知,如果没有您通过ssh登录访问所述服务器,它无法将您的公钥发送到服务器上.


Nir*_*aul 6

检查文件夹.ssh是否在您的系统上

  1. 转到文件夹 --> /Users/administrator/.ssh/id_ed25519.pub

如果没有,那么

  1. 打开终端。

在终端粘贴

  1. 检查用户 ? ssh -T git@gitlab.com

删除现有的 SSH 密钥

  1. 删除现有的 SSH 密钥? rm ~/.ssh/github_rsa.pub

创建新的

  1. 创建新的 SSH 密钥? ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 公钥已保存在“/Users/administrator/.ssh/id_ed25519.pub”中。

  3. 打开公钥保存路径。

  4. 复制 SSH 密钥?亚搏体育app帐户?环境 ?SSH 密钥?添加密钥

  5. 从终端再次测试ssh -T git@gitlab.com


Ant*_*hov 5

我在Unity中打开了“密码和密钥”应用程序,并从安全密钥 -> OpenSSH密钥中删除了不需要的密钥, 并且它们也自动从ssh-agent -l中删除。

  • 注意,这也会从目录〜/ .ssh中删除它们。 (2认同)
  • 什么是“团结”(在这种情况下)?“团结”这个词已经被严重滥用了。[Ubuntu Unity](https://en.wikipedia.org/wiki/Ubuntu_Unity) 还是 [Ubuntu 的 Unity](https://en.wikipedia.org/wiki/Unity_(user_interface))?或者是其他东西? (2认同)