我目前有一个旧的SSH密钥上传到服务器。问题是我丢失了~/。SSH目录(包含原来的id_rsa和id_rsa. zip)。酒吧文件)。

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

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

$> ssh-add -D

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


当前回答

在Remove Identity之前,需要使用该命令启动ssh-agent

eval `ssh-agent -s` 

删除所有身份

ssh-add -D

去除特定身份

ssh-add -d ~/.ssh/sshkeynamewithout.pub

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

ssh-add -l

其他回答

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

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

Debian Bug报告#472477:SSH -add -D没有从gnome-keyring-daemon内存中删除SSH密钥 “Ubuntu: ssh-add -D删除所有身份不工作。还有,为什么所有的身份都是自动添加的?”

确切的问题是:

ssh-add -d/-D deletes only manually added keys from gnome-keyring. There is no way to delete automatically added keys. This is the original bug, and it's still definitely present. So, for example, if you have two different automatically-loaded ssh identities associated with two different GitHub accounts -- say for work and for home -- there's no way to switch between them. GitHubtakes the first one which matches, so you always appear as your 'home' user to GitHub, with no way to upload things to work projects. Allowing ssh-add -d to apply to automatically-loaded keys (and ssh-add -t X to change the lifetime of automatically-loaded keys), would restore the behavior most users expect.


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

The culprit is gpg-keyring-daemon: It subverts the normal operation of ssh-agent, mostly just so that it can pop up a pretty box into which you can type the passphrase for an encrypted ssh key. And it paws through your .ssh directory, and automatically adds any keys it finds to your agent. And it won't let you delete those keys. How do we hate this? Let's not count the ways -- life's too short. The failure is compounded because newer ssh clients automatically try all the keys in your ssh-agent when connecting to a host. If there are too many, the server will reject the connection. And since gnome-keyring-daemon has decided for itself how many keys you want your ssh-agent to have, and has autoloaded them, AND WON'T LET YOU DELETE THEM, you're toast.

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


一个可能的解决办法:

执行ssh-add -D删除所有手动添加的密钥。这也会锁定 自动添加的钥匙,但没有太大的用处,因为gnome-keyring会要求你解锁他们无论如何当你尝试做一个git推。 导航到~/。并将所有密钥文件(除了您想要识别的文件)移动到一个名为backup的单独文件夹中。如果有必要,你也可以打开海马和删除密钥从那里。 现在你应该可以毫无问题地执行git push了。


另一个解决方案:

您真正需要做的是完全关闭gpg-keyring-daemon。 去系统->首选项->启动应用程序,并取消选择“SSH密钥代理(Gnome Keyring SSH代理)”框-你需要向下滚动才能找到它。 您仍然会得到一个ssh-agent,只是现在它将正常运行:没有自动加载密钥,您可以运行ssh-add来添加它们,如果您想删除密钥,也可以删除。想象一下。

这一评论实际上表明:

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


瑞安·卢在评论中提到了另一个有趣的特例:

如果这对任何人都有帮助:我甚至尝试删除id_rsa和id_rsa。所有Pub文件,但钥匙还是出现了。 结果发现gpg-agent正在~/中缓存它们。gnupg / sshcontrol文件;我必须手动删除它们。

这是当钥匙柄被添加在这里的情况。

我的解决方案(openSUSE Leap 42.3, KDE)是重命名文件夹~/。Gnupg显然包含缓存的密钥和配置文件。

在KDE注销/登录后,ssh-add/agent再次运行,并从头创建文件夹,但旧的密钥都消失了。

其他方法都没有成功。

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

进入文件夹——> /Users/administrator/.ssh/id_ed25519.pub

如果不是,那么

打开终端。

粘贴到终端

检查user→ssh -T git@gitlab.com

删除现有SSH密钥

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

创建新的

创建新的SSH密钥→SSH -keygen -t rsa -b 4096 -C "your_email@example.com" 公钥已保存在“/Users/administrator/.ssh/id_ed25519.pub”目录下。 打开公钥保存路径。 复制SSH密钥→GitLab帐号→设置→SSH密钥→添加密钥 从终端→ssh -T git@gitlab.com再次测试

在Remove Identity之前,需要使用该命令启动ssh-agent

eval `ssh-agent -s` 

删除所有身份

ssh-add -D

去除特定身份

ssh-add -d ~/.ssh/sshkeynamewithout.pub

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

ssh-add -l