我目前在服务器上上传了旧的SSH密钥。问题是我丢失了~/.ssh
目录(带有原始的id_rsa
和id_rsa.pub
文件)。
因此,我想直接在服务器上删除旧的SSH密钥并上传新的SSH密钥。
我尝试了以下命令,但未成功:
$> ssh-add -D
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9UQ05PRS5wbmcifQ==” alt =“在此处输入图像描述”>
是否有办法完全删除SSH密钥?
请注意,ssh-add -d/-D
至少有两个错误报告not删除键:
ssh-add -D
does not remove SSH key from gnome-keyring-daemon
memory”ssh-add -D
”确切的问题是:
gnome-keyring-daemon
仅从gnome-keyring中删除手动添加键。无法删除自动添加的键。这是原始错误,仍然肯定存在。因此,例如,如果您有两个不同的自动加载的ssh身份与两个不同的GitHub帐户相关联-例如工作和家庭,则没有[[无办法在它们之间进行切换。 GitHub是第一个匹配的人,因此您总是以GitHub的“家庭”用户身份出现,而无法将内容上传到工作项目中。
允许Ubuntu:ssh-add -D
deleting all identities does not work. Also, why are all identities auto-added?应用于自动加载
键(和ssh-add -D
更改自动加载键的寿命),将恢复大多数用户期望的行为。
罪魁祸首是ssh-add -d/-D
:它破坏了ssh-agent的正常运行,主要是为了使它可以弹出一个漂亮的框,您可以在其中输入加密的ssh密钥的密码。
- [它进入您的
ssh-add -d
目录,并自动将找到的所有密钥添加到您的代理中。- 而且它不会让您删除那些键。
我们如何讨厌这个?让我们不要数一下方式-生命太短暂了。 失败加剧了,因为较新的ssh客户端在连接到主机时会自动尝试ssh-agent中的所有密钥。如果太多,服务器将拒绝连接。而且由于gnome-keyring-daemon自行决定了您希望ssh-agent拥有多少个密钥,并且已经自动加载了它们,并且不会让您删除它们,所以您敬酒。
[最近两天前(2014年8月21日)仍在Ubuntu 14.04.4中确认此错误]
添加的键。这也锁定自动添加的键,但是用处不大,因为当您尝试执行执行
ssh-add -t X
删除所有- 手动
gpg-keyring-daemon
时,无论如何.ssh
都会要求您将其解锁。导航到ssh-add -D
文件夹,然后将除要标识的密钥文件以外的所有关键文件移动到称为备份的单独文件夹中。如有必要,您还可以打开海马并从那里删除密钥。gnome-keyring
。您真正想做的是完全关闭git push
。转到~/.ssh
,然后取消选择“git push
”框-您需要向下滚动才能找到它。您仍然会得到
gpg-keyring-daemon
,只是现在它会正常运行:不会自动加载任何键,您可以运行ssh-add来添加它们,如果要删除键,则可以。想象一下。
System --> Preferences --> Startup Applications
实际上建议:
解决方案是防止SSH Key Agent (Gnome Keyring SSH Agent)
永远启动,而通过最终删除程序文件的执行许可来实现,这是非常困难的。
ssh-agent
您可以使用以下方法从ssh代理中删除丢失的ssh密钥:
gnome-keyring-manager
目录,因此您要删除服务器上允许基于密钥的登录的公共密钥。在这种情况下,它将存储在服务器主目录中的$ git fetch
no such identity: <ssh key path>: No such file or directory
文件中。您可以仅使用文本编辑器编辑此文件,如果可以识别它,则删除相关的行(即使它是唯一的条目,也更容易!)。我希望密钥不是您访问服务器的唯一方法,并且您还有其他登录和编辑文件的方式。您可以将新的公钥手动添加到$ eval `ssh-agent -s` # start ssh agent
$ ssh-add -D <ssh key path> # delete ssh key
文件,也可以使用.ssh
。无论哪种方式,您都需要在服务器上为您的帐户设置密码验证,或者需要其他某种身份或访问方法来获取服务器上的.ssh/authorized_keys
文件。authorised_keys
向您的ssh代理添加身份,该身份在本地处理您的身份管理,并且“通过SSH远程登录转发到该代理的连接,因此用户可以在网络中任何位置使用该身份赋予的特权安全的方式。” (手册页),因此在这种情况下,我认为这不是您想要的。据我所知,如果您无法通过ssh登录名访问该服务器,就无法将您的公钥放入服务器。
安全密钥-> OpenSSH密钥中删除了不需要的密钥并且它们也自动从ssh-agent -l中删除。
ssh-copy-id
,然后重启authorized_keys
告诉我该代理没有身份。我确认我仍然有ssh-add
守护程序与ssh-add -D
一起运行。因此,我添加了我最常用于GitHub的密钥(ssh-add -l
),一切都很好!
ssh-agent
为其指定一个终端即可。解决了!感谢@VonC指出错误和解决方案。