我在毫无谨慎的情况下创建了 .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