添加一个没有密码但有 SSH 和公钥的用户

use*_*776 61 password ssh authentication useradd

我想向 Red Hat Linux 添加一个用户,该用户不会使用密码登录,而是使用公钥进行 ssh。这将在命令行上。

Lam*_*ert 66

从创建用户开始:

useradd -m -d /home/username -s /bin/bash username
Run Code Online (Sandbox Code Playgroud)

从客户端创建一个密钥对,您将使用该密钥对ssh

ssh-keygen -t dsa
Run Code Online (Sandbox Code Playgroud)

将公钥复制/home/username/.ssh/id_dsa.pub到 RedHat 主机上/home/username/.ssh/authorized_keys

为 RedHat 主机上的文件设置正确的权限:

chown -R username:username /home/username/.ssh
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

确保在 RedHat 主机上启用了公钥身份验证:

grep  PubkeyAuthentication /etc/ssh/sshd_config
#should output:
PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)

如果没有,请将该指令更改为 yes 并sshd在 RedHat 主机上重新启动该服务。

从客户端开始ssh连接:

ssh username@redhathost
Run Code Online (Sandbox Code Playgroud)

它应该会自动查找关键id_dsa~/.ssh/。您还可以使用以下命令指定身份文件:

ssh -i ~/.ssh/id_dsa username@redhathost
Run Code Online (Sandbox Code Playgroud)

  • 使用 RSA 而不是 DSA (8认同)
  • 其实我没有忘记密码锁。由于我根本没有设置它,因此新创建的用户的密码会自动锁定。 (4认同)
  • 请使用“ssh-keygen -t ed25519”,因为这是当今最推荐的公钥算法 (2认同)
  • 我错误地认为“进入‘authorized_keys’”意味着‘authorized_keys’是一个文件夹。它实际上是一个文件!希望这对某人有帮助。 (2认同)

Mit*_*tar 26

在 Ubuntu 上,您可以添加用户:

adduser --disabled-password <username>
Run Code Online (Sandbox Code Playgroud)

然后.ssh/authorized_keys使用他们的公钥在他们的主目录中创建文件。


小智 11

你可以使用:

usermod --lock <username>
Run Code Online (Sandbox Code Playgroud)

从手册页:

锁定用户的密码。这放了一个“!” 在加密密码前面,有效禁用密码。您不能将此选项与 -p 或 -U 一起使用。注意:如果您希望锁定帐户(不仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。