我目前有一个旧的SSH密钥上传到服务器。问题是我丢失了~/。SSH目录(包含原来的id_rsa和id_rsa. zip)。酒吧文件)。
因此,我想直接在服务器上删除旧的SSH密钥,并上传一个新的密钥。
我尝试了以下命令,但没有成功:
$> ssh-add -D
有没有办法完全删除SSH密钥?
我目前有一个旧的SSH密钥上传到服务器。问题是我丢失了~/。SSH目录(包含原来的id_rsa和id_rsa. zip)。酒吧文件)。
因此,我想直接在服务器上删除旧的SSH密钥,并上传一个新的密钥。
我尝试了以下命令,但没有成功:
$> ssh-add -D
有没有办法完全删除SSH密钥?
注意,至少有两个关于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文件;我必须手动删除它们。
这是当钥匙柄被添加在这里的情况。
除非我误解了,你在本地机器上丢失了包含私钥的.ssh目录,所以你想删除服务器上允许基于密钥登录的公钥。
在这种情况下,它将存储在服务器上主目录中的.ssh/authorized_keys文件中。您可以使用文本编辑器编辑该文件,如果您能够识别相关行,则删除相关行(如果它是唯一的条目,则更容易!)
我希望这个密钥不是您访问服务器的唯一方法,您还有其他登录和编辑文件的方法。您可以手动向authorised_keys文件添加新的公钥,也可以使用ssh-copy-id。无论采用哪种方式,您都需要在服务器上为您的帐户设置密码身份验证,或者使用其他身份或访问方法来访问服务器上的authorized_keys文件。
SSH -add将身份添加到您的SSH代理,该代理在本地处理您的身份管理,并且“到代理的连接通过SSH远程登录转发,因此用户可以以安全的方式在网络中的任何地方使用身份所赋予的特权。”(手册页),所以我不认为这是你在这种情况下想要的。据我所知,如果你没有通过SSH登录访问服务器,它没有任何方法将你的公钥放到服务器上。
如果您正在尝试执行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
我可以确认这个错误仍然存在于Ubuntu 19.04 (Disco Dingo)中。VonC建议的解决方法非常有效,我的版本总结如下:
点击左上角的Activities标签 在出现的搜索框中,输入“启动应用程序” 点击“启动应用程序”图标 在弹出的框中,选择gnome密匙环管理器应用程序(不记得GUI上的确切名称,但它足够独特)并删除它。
接下来,我再次尝试ssh-add -D,重启后ssh-add -l告诉我代理没有身份。我确认我仍然有ssh-agent守护进程运行ps aux | grep代理。所以我添加了我最常用的密钥GitHub (ssh-add ~/.ssh/id_ecdsa),一切都很好!
现在我可以对我最常用的存储库进行正常操作,如果我偶尔需要访问使用RSA密钥的其他存储库,我只需要为它专用一个终端,导出GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub"。解决了!功劳归于VonC指出了错误和解决方案。
我的解决方案(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
在ubuntu中,如果你当前的ssh-agent已经加载了一些键,我发现没有办法删除它。
你必须通过eval "$(ssh-agent -k)"来终止当前的ssh-agent
然后,通过eval "$(ssh-agent -s)"启动一个新的ssh-agent
好了,现在您可以自由地添加一个首选密钥,如ssh-add ~/.ssh/id_preferred_key