首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除SSH密钥?

如何删除SSH密钥?
EN

Stack Overflow用户
提问于 2014-08-23 18:13:15
回答 9查看 631K关注 0票数 222

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

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

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

代码语言:javascript
运行
复制
$> ssh-add -D

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-08-23 18:37:15

请注意,对于ssh-add -d/-D不移除键,至少有两个bug报告:

确切的问题是:

ssh-add -d/-D只删除gnome-keyring中手动添加的键。 无法删除自动添加的密钥。 这是最初的bug,而且它仍然存在。 因此,例如,如果您有两个不同的自动加载ssh标识,与两个不同的GitHub帐户相关联--比如工作帐户和家庭帐户--那么就无法在它们之间切换。GitHubtakes是第一个匹配的用户,所以您总是以“主”用户的身份出现在GitHub上,没有办法上传东西来工作项目。 允许ssh-add -d应用于自动加载的键(并允许ssh-add -t X更改自动加载键的生存期)将恢复大多数用户期望的行为。

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

罪魁祸首是gpg-keyring-daemon

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

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

由于较新的ssh客户端在连接到主机时会自动尝试ssh代理中的所有键,所以故障更加严重。

如果有太多的连接,服务器将拒绝连接。

既然gnome-keyring-守护进程已经决定了你想要你的ssh代理拥有多少个密钥,并且自动修改了它们,并且不允许你删除它们,你就完了。

直到两天前(2014年8月21日),Ubuntu 14.04.4中仍证实了这一缺陷。

一种可能的解决办法:

  • 执行ssh-add -D删除所有手动添加的键。这也锁定了自动添加的键,但是没有多大用处,因为gnome-keyring会要求您在尝试执行git push时将它们解锁。
  • 导航到您的~/.ssh文件夹,并将您想要标识的所有密钥文件移到一个单独的文件夹中,称为备份。如有必要,您也可以打开海马,并删除那里的钥匙。
  • 现在,您应该能够在没有问题的情况下完成git push

另一个解决办法是:

您真正想做的是完全关闭gpg-keyring-daemon。 转到System --> Preferences --> Startup Applications,取消选中"SSH Key Agent (Gnome Keyring SSH Agent)“框--您需要向下滚动才能找到它。 您仍然会得到一个ssh-agent,直到现在它才会正常运行:没有自动添加键,您可以运行ssh-add来添加它们,如果您想删除键,则可以。想象一下。

本评论实际上建议:

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

莱恩·卢增加了另一个有趣的角落案例,在评论中

如果这对任何人都有帮助:我甚至尝试完全删除id_rsaid_rsa.pub文件,而密钥仍在显示。 原来,gpg-agent 将它们缓存在 ~/.gnupg/sshcontrol 文件中;我不得不手动删除它们。

锁匙柄被添加到就像在这里时,情况就是如此。

票数 172
EN

Stack Overflow用户

发布于 2018-06-07 17:30:40

如果您试图执行与SSH相关的操作,并获得以下错误:

代码语言:javascript
运行
复制
$ git fetch
no such identity: <ssh key path>: No such file or directory

可以使用以下方法从SSH代理中删除缺少的SSH密钥:

代码语言:javascript
运行
复制
$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
票数 18
EN

Stack Overflow用户

发布于 2020-01-02 08:14:30

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

  1. 转到文件夹->/Users/administrator/..ssh/id_id 25519。

如果不是,那么

  1. 开放航站楼。

粘贴在终端

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

删除现有的SSH键

  1. 删除现有的SSH键rm ~/.ssh/github_rsa.pub

创建新

  1. 创建新的SSH密钥ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 公钥已保存在“/User/管理员/..ssh/id_ed25519.PUB”中。
  3. 打开公钥保存的路径.
  4. 复制SSH密钥→GitLab帐户→设置→SSH密钥→添加密钥
  5. 来自终端→ssh -T git@gitlab.com的再次测试
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25464930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档