如果你想使用 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
| useradd -m -s /bin/bash devuser
passwd devuser
usermod -aG sudo devuser
sudo usermod -aG wheel devuser
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:
你就可以用:
然后输入密码登录。
✅ 方法二:使用公钥登录(推荐)
- 在你的本地机器(如 macOS/Linux)生成密钥(如果没有):
1
| ssh-keygen -t rsa -b 4096
|
- 将公钥复制到远程服务器上(推荐使用 ssh-copy-id):
或者手动复制 ~/.ssh/id_rsa.pub 内容,登录服务器后粘贴进:
1
| /home/devuser/.ssh/authorized_keys
|
并设置权限:
1 2
| chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
|
🧪 第三步:验证免密码 sudo 和 SSH
- 从本地登录:
- 登录后测试 sudo:
应该输出:
并且不需要输入密码。
明白了!你想要的效果是:
✅ 只禁止新建的某个用户(如 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 服务:
1
| sudo systemctl restart ssh
|
1
| sudo systemctl restart sshd
|
✅ 可选:也可匹配多个用户
如果你有多个用户想要禁用密码登录,可以写成:
1 2
| Match User devuser,anotheruser PasswordAuthentication no
|
⚠️ 小贴士(强烈建议):
- 测试前不要关闭当前连接! 新开一个终端用
ssh devuser@ip 验证密钥登录是否正常。
- 如果你禁用密码登录但未正确配置公钥,可能会导致该用户永远无法登录。