在Ubuntu系统中,用户登录管理是系统安全的重要组成部分。本文将介绍如何禁用用户登录、锁定用户账户等安全配置方法。

禁用密码认证

编辑SSH配置文件:

1
sudo nano /etc/ssh/sshd_config

修改以下配置项:

1
2
3
4
5
6
7
8
9
10
11
# 禁用密码认证
PasswordAuthentication no

# 禁用PAM认证
UsePAM no

# 禁用挑战响应认证
ChallengeResponseAuthentication no

# 确保公钥认证已启用
PubkeyAuthentication yes

保存文件(nano编辑器:Ctrl + O,然后 Ctrl + X)并重启SSH服务:

1
sudo systemctl restart ssh

禁用特定用户

在SSH配置中添加用户限制:

1
2
3
4
5
# 禁用特定用户登录
DenyUsers username1 username2

# 或者只允许特定用户登录
AllowUsers allowed_user1 allowed_user2

锁定用户账户

锁定用户密码

1
2
3
4
5
# 锁定用户(用户无法使用密码登录)
sudo usermod -L username

# 解锁用户
sudo usermod -U username

禁用用户shell

1
2
3
4
5
# 将用户shell设置为nologin
sudo usermod -s /usr/sbin/nologin username

# 恢复用户shell
sudo usermod -s /bin/bash username

设置用户密码过期

1
2
3
4
5
# 设置用户密码立即过期
sudo chage -E 0 username

# 恢复用户密码有效期
sudo chage -E -1 username

验证配置

测试SSH连接:

1
2
3
4
5
# 测试密码登录(应该失败)
ssh username@server_ip

# 测试密钥登录(应该成功)
ssh -i ~/.ssh/id_rsa username@server_ip

常见问题

锁定后仍能登录

sudo usermod -L username 只锁定密码,不影响SSH密钥认证。要完全禁用登录,需要组合使用:

  • 禁用用户shell:sudo usermod -s /usr/sbin/nologin username
  • 在SSH配置中禁用:添加 DenyUsers username

解锁时提示无密码账户

错误信息表示用户原本就没有密码。解决方案:

1
2
sudo passwd username  # 先设置密码
sudo usermod -U username # 再解锁

本站由 Naiba 使用 Stellar 1.33.1 主题创建。 文章默认采用 CC BY-NC-SA 4.0 许可协议。