将 SSH 公钥添加到新账户而不启用密码验证

将 SSH 公钥添加到新账户而不启用密码验证

在 SSH 服务器上,我有以下(截断的)配置:

PubkeyAuthentication yes
PasswordAuthentication yes

在我的客户端上,我有一对密钥,并且已在服务器上添加了我的公钥:

ssh-copy-id <my-server>

现在,如果我将选项更改PasswordAuthenticationno,那么连接到我的 SSH 服务器的唯一方法就是验证密钥,对吗?

然后,如果我想添加一个新的客户,我需要:

  • PasswordAuthentication暂时从已授权的客户端启用该选项,并ssh-copy-id从新客户端使用
  • ~/.ssh/authorized_keys或者从已经授权的客户端复制/粘贴到服务器的新客户端的公钥。

但我发现这些方法很无聊。

问题:有没有更简单的方法添加新的~/.ssh/authorized_keys服务器上文件的密钥?

答案1

您可以像更改系统上的任何其他文件一样更改新用户的authorized_keys文件。您不需要使用用户的帐户来执行此操作。任何对文件具有写权限的帐户都可以。即通常是帐户root(或sudo)。

只需为您创建所有文件夹和文件并赋予正确的权限,即可ssh-copy-id简化流程。手动执行此操作时,您需要自行确保所有操作。

答案2

从根本上来说,您的每个问题的答案都是肯定的。无论您是否觉得这种方法“无聊”,它都是允许访问新客户端的一种可接受的方式。

添加新密钥的另一种可能方法是使用现有客户端将公钥的内容从新客户端复制并粘贴到~/.ssh/authorized_keys目标计算机上相关用户的文件中 - 确保权限和所有权设置正确。这样就无需暂时允许使用密码进行身份验证(无论如何都需要将密码传递给尝试操作的用户ssh-copy-id)。

相关内容