SSH public 密钥认证

SSH public key authentication

是否可以在不知道其当前密码的情况下,将 SSH 用户 user@xxx.xxx.xxx.xxx 的身份验证方法从密码身份验证更改为 public 密钥身份验证?

感谢您的回答!

这是关于 ssh 配置的帮助 post。

https://man.openbsd.org/ssh_config.5

您可以使用以下方式禁用密码验证:

ssh -o PasswordAuthentication=no user@xxx.xxx.xxx.xxx

如果您对 ssh 的工作原理感兴趣。您可以使用 ssh -v user@xxx.xxx.xxx.xxx 来使用详细模式。这有时有助于调试。

无论使用何种身份验证方法(密码或 public-key 身份验证),必须发生两件事:

  • “用户”必须输入密码或生成密钥对;
  • 密码散列或 public 密钥必须在“用户”想要连接的服务器(“xxx.xxx.xxx.xxx”)中配置。

如果您是服务器 (xxx.xxx.xxx.xxx) 的管理员(root),您可以要求“用户”将他的 public 密钥发送给您并将其放在正确的位置,而您不需要不需要知道“用户”的密码。

如果您是“用户”,您需要至少使用您的密码连接到“xxx.xxx.xxx.xxx”一次,以便您可以上传您的 public 密钥。 这里我假设 SSH 服务器使用默认的 OpenSSH 配置,其中每个用户的“authorized_keys”文件位于用户的主目录中,在 his/her 控制下。

如果您随后想将身份验证方法“强制”为“public 密钥”,管理员将需要编辑 SSH 服务器的配置以禁用密码身份验证(对所有人或仅对“用户”).