创建用户

如果你想使用 SSH 登录一个新创建的用户,并且配置了免密 sudo 权限,这里是完整流程:


✅ 场景:使用 SSH 登录新用户 + 免密 sudo

假设:

  • 服务器 IP:192.168.1.100
  • 新用户:devuser
  • 当前是用 root 或 sudo 用户操作

🧱 第一步:创建用户并配置 sudo(免密码)

你可以直接运行以下命令(假设你在 root 用户下):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 创建用户并设置 shell
useradd -m -s /bin/bash devuser

# 2. 设置密码(可跳过,如果你用 SSH 密钥登录)
passwd devuser

# 3. 加入 sudo 组(Debian/Ubuntu)
usermod -aG sudo devuser

# CentOS/RHEL:
sudo usermod -aG wheel devuser


# 4. 配置免密码 sudo 权限
echo 'devuser ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/devuser
chmod 440 /etc/sudoers.d/devuser

🔑 第二步:配置 SSH 登录

✅ 方法一:允许密码登录(默认情况)

确认 /etc/ssh/sshd_config 中以下配置项开启:

1
2
PermitRootLogin yes
PasswordAuthentication yes

然后重启 SSH:

1
systemctl restart sshd

你就可以用:

1
ssh [email protected]

然后输入密码登录。


✅ 方法二:使用公钥登录(推荐)

  1. 在你的本地机器(如 macOS/Linux)生成密钥(如果没有):
1
ssh-keygen -t rsa -b 4096
  1. 将公钥复制到远程服务器上(推荐使用 ssh-copy-id):
1
ssh-copy-id [email protected]

或者手动复制 ~/.ssh/id_rsa.pub 内容,登录服务器后粘贴进:

1
/home/devuser/.ssh/authorized_keys

并设置权限:

1
2
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

🧪 第三步:验证免密码 sudo 和 SSH

  1. 从本地登录:
1
ssh [email protected]
  1. 登录后测试 sudo:
1
sudo whoami

应该输出:

1
root

并且不需要输入密码。

明白了!你想要的效果是:

只禁止新建的某个用户(如 devuser)使用密码登录 SSH,其他用户(比如 root 或 admin)仍然可以用密码登录。


✅ 方法:通过 sshd_config 配置 Match User 限制密码登录

步骤如下:

1. 编辑 SSH 配置文件:

1
sudo vi /etc/ssh/sshd_config

2. 在文件末尾添加以下内容:

1
2
Match User devuser
PasswordAuthentication no

这表示对用户 devuser,禁用密码登录,其他用户不受影响。


3. 重启 SSH 服务:

  • Debian/Ubuntu
1
sudo systemctl restart ssh
  • CentOS/RHEL
1
sudo systemctl restart sshd

✅ 可选:也可匹配多个用户

如果你有多个用户想要禁用密码登录,可以写成:

1
2
Match User devuser,anotheruser
PasswordAuthentication no

⚠️ 小贴士(强烈建议):

  • 测试前不要关闭当前连接! 新开一个终端用 ssh devuser@ip 验证密钥登录是否正常。
  • 如果你禁用密码登录但未正确配置公钥,可能会导致该用户永远无法登录。