如何删除一个SSH密钥?
我目前在服务器上上传了一个旧的SSH密钥。 问题是我失去了我的~/.ssh
目录(与原始的id_rsa
和id_rsa.pub
文件)。
因此,我想直接在服务器上删除旧的SSH密钥,并上传一个新的。
我尝试了下面的命令没有成功:
$> ssh-add -D
有没有办法彻底删除SSH密钥?
请注意, ssh-add -d/-D
至less有两个错误报告不会删除密钥:
- “ Debian Bug report#472477:
ssh-add -D
不会从gnome-keyring-daemon
内存中删除SSH密钥 ” - “ Ubuntu:
ssh-add -D
删除所有身份不起作用,为什么所有的身份都自动添加?
确切的问题是:
ssh-add -d/-D
只从gnome-keyring 手动添加密钥。
没有办法删除自动添加的键。
这是原来的错误,而且还是存在的。所以,举例来说,如果你有两个不同的自动加载的ssh身份与两个不同的GitHub账户相关联 – 比如说工作和家庭 – 就没有办法在他们之间切换。 GitHubtakes第一个匹配,所以你总是作为你的“家”用户GitHub,没有办法上传东西到工作项目。
允许
ssh-add -d
应用于自动加载的密钥(和ssh-add -t X
以更改自动加载的密钥的生存期),可以恢复大多数用户所期望的行为。
更确切地说,关于这个问题:
罪魁祸首是
gpg-keyring-daemon
:
- 它颠覆了ssh-agent的正常运行,主要是为了能够popup一个漂亮的方框,你可以在其中键入一个encryption的ssh密钥的密码。
- 它通过你的
.ssh
目录,并自动添加find你的代理的任何密钥。- 它不会让你删除这些键。
我们怎么恨这个? 让我们不要指望的方式 – 生活太短。
由于较新的ssh客户端在连接到主机时会自动尝试ssh-agent中的所有密钥,所以失败是复杂的。
如果太多,服务器将拒绝连接。
而且由于gnome-keyring-daemon自己决定了你希望你的ssh-agent拥有多less个密钥,并且自动加载了它们,而且不会让你删除它们,所以你就干了。
最近两天前(2014年8月21日),Ubuntu 14.04.4中仍然确认了这个错误,
可能的解决方法:
- 做
ssh-add -D
删除所有手动添加的密钥。 这也locking了自动添加的键,但没有多大用处,因为gnome-keyring
会在你尝试执行git push
时候要求你解开它们。- 导航到您的
~/.ssh
文件夹,并将您想要识别的所有密钥文件移至另一个名为backup的文件夹中。 如有必要,您也可以打开海马并从那里删除钥匙。- 现在你应该可以做到没有问题的
git push
。
另一个解决方法:
你真正想要做的是完全closures
gpg-keyring-daemon
。
进入System --> Preferences --> Startup Applications
,并取消select“SSH Key Agent (Gnome Keyring SSH Agent)
”框 – 你需要向下滚动才能find它。你仍然会得到一个
ssh-agent
,只有现在它会performance得很好:没有键自动加载,你运行ssh-add来添加它们,如果你想删除键,你可以。 想象一下。
这个意见实际上表明:
解决的办法是保持
gnome-keyring-manager
永远不会启动,这很难通过删除程序文件的执行权限来实现。
除非我误解,否则在本地计算机上丢失了包含您的私钥的.ssh
目录,因此您要删除服务器上的公钥,并允许使用基于密钥的login。 在这种情况下,它将被存储在服务器的主目录中的.ssh/authorized_keys
文件中。 你可以用文本编辑器编辑这个文件,如果你能识别它,删除相关的行(如果它是唯一的条目就更容易了)。 我希望这个键不是你访问服务器的唯一方法,而且你还有其他一些login和编辑文件的方式。 您可以手动将新的公钥添加到authorised_keys
文件或使用ssh-copy-id
。 无论采用哪种方式,您都需要在服务器上为您的帐户设置密码validation,或者使用其他身份或访问方法来访问服务器上的authorized_keys
文件。
ssh-add
为您的ssh代理添加身份,ssh代理在本地处理您的身份pipe理,“与代理的连接通过SSH远程login进行转发,因此用户可以安全地使用networking中任何位置的身份“。 (手册页),所以我不认为这是你想要在这种情况下。 据我所知,如果没有通过sshlogin访问服务器,就无法将公钥存入服务器。
最简单的方法是
ssh-keygen -R hostname
我在Unity中打开了“密码和密钥”应用程序,并从安全密钥 – > OpenSSH密钥中删除了不需要的密钥,而且它们也自动从ssh-agent -l中删除。