如何删除ssh密钥?

问题描述 投票:116回答:5

我目前在服务器上上传了旧的SSH密钥。问题是我丢失了~/.ssh目录(带有原始的id_rsaid_rsa.pub文件)。

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

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

$> ssh-add -D

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9UQ05PRS5wbmcifQ==” alt =“在此处输入图像描述”>

是否有办法完全删除SSH密钥?

git ssh git-svn ssh-keys ssh-keygen
5个回答
103
投票

请注意,ssh-add -d/-D至少有两个错误报告not删除键:

确切的问题是:

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)永远启动,而通过最终删除程序文件的执行许可来实现,这是非常困难的。

  • 8
    投票
    如果您尝试执行与ssh相关的操作并出现以下错误:

    ssh-agent

    您可以使用以下方法从ssh代理中删除丢失的ssh密钥:

    This comments


    6
    投票
    除非我有误解,否则您丢失了包含本地密钥的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登录名访问该服务器,就无法将您的公钥放入服务器。


    5
    投票
    我在Unity中打开了“密码和密钥”应用程序,并从

    安全密钥-> OpenSSH密钥中删除了不需要的密钥并且它们也自动从ssh-agent -l中删除。


    1
    投票
    我可以确认此错误在Ubuntu 19.04中仍然存在。 @VonC建议的解决方法非常有效,总结了我的版本:

      单击左上角的活动选项卡
    • 在出现的搜索框中,开始输入“启动应用程序”
    • 单击“启动应用程序”图标
    • 在弹出的框中,选择gnome钥匙圈管理器应用程序(无法记住GUI上的确切名称,但具有足够的独特性,然后将其删除。
  • 我接下来要做的是再次尝试ssh-copy-id,然后重启authorized_keys告诉我

    该代理没有身份。我确认我仍然有ssh-add守护程序与ssh-add -D一起运行。因此,我添加了我最常用于GitHub的密钥(ssh-add -l),一切都很好!

    现在,我可以使用最常用的存储库执行正常操作,如果偶尔需要访问使用RSA密钥的另一个存储库,我只需使用ssh-agent为其指定一个终端即可。解决了!感谢@VonC指出错误和解决方案。
  • © www.soinside.com 2019 - 2024. All rights reserved.