我现在在服务器上上传了一个旧的SSH密钥。问题是我丢失了我的~/.ssh
目录(包含原始的id_rsa
和id_rsa.pub
文件)。
因此,我想直接删除服务器上的旧SSH密钥,并上传一个新的SSH密钥。
我尝试了以下命令,但没有成功:
$> ssh-add -D
有办法完全删除SSH密钥吗?
发布于 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代理中的所有键,所以故障更加严重。
如果有太多的连接,服务器将拒绝连接。
既然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_rsa
和id_rsa.pub
文件,而密钥仍在显示。 原来,gpg-agent
将它们缓存在~/.gnupg/sshcontrol
文件中;我不得不手动删除它们。
发布于 2018-06-07 17:30:40
如果您试图执行与SSH相关的操作,并获得以下错误:
$ git fetch
no such identity: <ssh key path>: No such file or directory
可以使用以下方法从SSH代理中删除缺少的SSH密钥:
$ eval `ssh-agent -s` # start ssh agent
$ ssh-add -D <ssh key path> # delete ssh key
发布于 2020-01-02 08:14:30
检查文件夹 .ssh 是否在系统上
如果不是,那么
粘贴在终端中
删除现有的SSH键
rm ~/.ssh/github_rsa.pub
→创建新
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
→ssh -T git@gitlab.com
的再次测试https://stackoverflow.com/questions/25464930
复制相似问题