当我不知道主机名时,如何删除我的密钥(ssh-keygen)?(但我知道其他事情)

当我不知道主机名时,如何删除我的密钥(ssh-keygen)?(但我知道其他事情)

我在毫无谨慎的情况下创建了 .ssh,这是一个巨大的错误,我想摆脱它们并回到我开始的地方。

我运行了命令

ssh-keygen -t rsa -b 4096 -C [email protected]
Your identification has been saved in /home/trenta/.ssh/id_rsa.
Your public key has been saved in /home/trenta/.ssh/id_rsa.pub.
The key fingerprint is:

The key's randomart image is:

bash-4.1$ eval "$(ssh-agent -s)"

bash-4.1$ ssh-add ~/.ssh/id_rsa
bash-4.1$ ssh-keygen -y -f ~/.ssh/id_rsa
Enter passphrase: 

我现在想回去,我应该使用

ssh -keygen -R hostname

但是,我不知道主机名,我怎样才能摆脱密钥?

谢谢你!

答案1

无需执行任何操作,只需删除您创建的密钥(~/.ssh/id_rsa~/.ssh/id_rsa.pub)。简要介绍 SSH 的工作原理以及各种文件的用途。

  • 无需密码的 SSH 使用“非对称密钥”来工作。
  • 这需要您生成一对密钥,一个是私钥(~/.ssh/id_rsa),一个是公钥(~/.ssh/id_rsa.pub)。
  • 在登录过程中,SSH 使用您的本地私钥执行一些操作,该操作可以在另一个系统上使用您的公钥进行检查。
  • 民众密钥不需要安全保存。另一方面私人的密钥永远不应离开您的本地系统。如果您认为您的本地系统 (及其备份) 不够安全,其他人可以访问密钥。
  • 为了在其他系统上识别您自己,您需要向他们提供您的民众密钥。在这些其他系统上,您可以登录以拥有您的民众密钥添加到他们的~/.ssh/authorized_keys文件中,顾名思义,该文件收集了所有可以以该用户 ID 登录的人的公钥。这可以通过编辑器手动完成,也可以使用实用ssh-copy-id程序完成。
  • 作为一项附加保护措施(据我所知,当您使用密码登录时最有用),您连接的系统有一个标识符。此标识符在登录过程中发送到您的系统。如果标识符不在您的known_hosts文件中(这是您第一次连接到它们时的情况),系统会询问您是否接受该标识符,如果是,则将其添加到您的本地~/.ssh/known_hosts。通常,此标识符永远不会改变,因此如果稍后再次要求您接受标识符,最好向某些管理员确认。

所以,您现在的位置是:您刚刚在本地系统上生成了几个公钥/私钥。

  • 只要它们没有在任何地方使用,您就可以直接擦除它们,无需查看。
  • 如果您在系统上复制了公钥,则可以将其删除以保持清洁,但只要私钥没有被泄露,就不会造成安全风险。
  • 如果有一天你怀疑你的私钥被泄露(你没有设置密码,而有人访问了你的系统或您的备份),那么您应该认真地从您复制它的 id/systems 中删除匹配的公钥authorized_keys(从这个角度来看,该known_hosts文件是哪些系统持有您的公钥副本的一个很好的线索)。然后您可以生成一对新公钥,并将新的公钥复制到必要的系统。
  • 通常情况下,除非您也使用 SSH 登录本地系统,否则您没有本地权限~/.ssh/authorized_keys(但这种情况很少见,最好避免)
  • 您需要从文件中删除主机的一种情况known_hosts是,当该主机的标识符发生以下变化时合法的目的(主机重新安装或升级,旧标识符在此过程中丢失,但管理员应该会通知您)。然后您希望能够将新 ID 添加到您的 ID 中,但known_hosts只要以前的 ID 存在,就无法完成此操作。一种解决方案是擦除,known_hosts但您必须重新接受所有远程主机的密钥,或者您使用ssh-keygen -R <host>仅删除相关的过时密钥。

答案2

如果你想回到原点,不用 ssh,只需

rm -rf ~/.ssh

(感谢@PerlDuck 提醒我使用“r”表示递归)现在,我认为你可能将你的密钥与你通过 ssh 进入的其他服务器的密钥混淆了;这些密钥在 ~/.ssh/known_hosts文件中以明文形式显示 - 请参阅如何管理我的 ssh 已知主机文件

当尝试列出以句点开头的文件或目录时,请务必在命令中添加“a”参数ls,因为以“。”开头的文件在基本ls命令中是“隐藏”的:

ls -la

相关内容