如何管理服务器上 ~/.ssh/authorized_keys 中的密钥?(在特定机器上每次登录时无需输入密码)

如何管理服务器上 ~/.ssh/authorized_keys 中的密钥?(在特定机器上每次登录时无需输入密码)

我试图按照这个答案通过 ssh 登录到我的服务器,而不必每次都输入极长的密码: https://serverfault.com/a/241593/295203

目前我的authorized_keys中有6个密钥:

(base) -bash-4.1$ wc -l ~/.ssh/authorized_keys
6 /home/[myusername]/.ssh/authorized_keys

我的第一反应是删除其中的所有密钥,然后执行ssh-copy-id id@server上述链接中的步骤。但是,我担心如果我这样做,就会被彻底锁定。

我的最终目标:

  1. 从我运行的工作计算机ssh-keygen -t rsa -b 2048,无需使用密码即可登录到远程服务器。
  2. 从任何其他计算机都需要密码。

答案1

我会:

  1. 连接到服务器时备份你的 ~/.ssh/authorized_keys
  2. 在终端文本编辑器(nano/vi/...)中打开我的 ~/.ssh/authorized_keys 文件
  3. 通过查看这些行,识别你的工作计算机的公钥
  4. 删除所有其他行,保存
  5. 在仍处于连接状态时尝试从另一个终端建立 ssh 连接以确保安全。
  6. 如果失败,恢复备份并重试,直到成功。

答案2

我不清楚您指的是密码密钥还是帐户密码,所以我假设您指的是帐户密码。

首先,您可以通过执行以下命令删除密钥的密码,这样您就可以使用密钥对登录到服务器而无需输入密码(当要求输入密码时只需按回车键):

$ ssh-keygen -p -f ~/.ssh/id_rsa

其次,您可以使用您的帐户密码从任何其他计算机登录,而无需传递私钥。

不过,如果是公开的服务器,我认为你不应该这样做。服务器强化的最佳实践建议不要使用密码登录。

相关内容