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

tre*_*ime 2 server ssh keyrings

我在没有任何谨慎的情况下创建 .ssh 时犯了一个巨大的错误,我想摆脱它们并回到我开始的地方。

我运行了命令

ssh-keygen -t rsa -b 4096 -C trenta@github.com
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: 
Run Code Online (Sandbox Code Playgroud)

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

ssh -keygen -R hostname
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

xen*_*oid 5

除了删除您创建的密钥(~/.ssh/id_rsa~/.ssh/id_rsa.pub)之外,无事可做。SSH 工作原理和各种文件用途的快速摘要。

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

所以,你在哪里:你刚刚在本地系统上生成了几个公钥/私钥。

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