如何在Ubuntu上管理SSH用户
小樊
45
2025-11-16 15:10:08
Ubuntu 上管理 SSH 用户的实用指南
一 准备与基础检查
- 确认已安装并运行 OpenSSH 服务器:sudo apt update && sudo apt install openssh-server;启动与自启:sudo systemctl start ssh、sudo systemctl enable ssh;检查状态:sudo systemctl status ssh。若未运行,客户端将无法连接。
- 如系统启用防火墙(如 ufw),放行 22 端口:sudo ufw allow 22。
- 建议以普通用户操作,必要时通过 sudo 提权,避免直接用 root 远程登录。
二 创建用户与启用 SSH 登录
- 交互式创建用户(会自动创建家目录与设置密码):sudo adduser username;如需 sudo 权限:sudo usermod -aG sudo username。
- 仅创建用户(不自动建家目录/Shell):sudo useradd username;如需家目录与默认 Shell:sudo useradd -m -s /bin/bash username,然后设置密码:sudo passwd username。
- 启用密钥登录(推荐):
- 本地查看公钥:cat ~/.ssh/id_rsa.pub;
- 在服务器为目标用户创建目录与授权文件:sudo mkdir -p /home/username/.ssh && sudo touch /home/username/.ssh/authorized_keys;
- 写入公钥:echo “粘贴公钥内容” | sudo tee -a /home/username/.ssh/authorized_keys;
- 修正所有权与权限:sudo chown -R username:username /home/username/.ssh;sudo chmod 700 /home/username/.ssh;sudo chmod 600 /home/username/.ssh/authorized_keys。
- 使配置生效:sudo systemctl restart ssh。
三 配置用户访问控制
- 基于用户白名单/黑名单:编辑 /etc/ssh/sshd_config,例如
- 白名单:AllowUsers alice bob@192.168.1.0/24
- 黑名单:DenyUsers guest
- 仅密钥登录(更安全):在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no,确认 PubkeyAuthentication yes,重启 ssh。
- 基于 IP 的访问控制:编辑 /etc/hosts.allow 与 /etc/hosts.deny
- 允许某 IP:sshd:192.168.1.10:allow
- 拒绝所有其他:sshd:ALL:deny
说明:hosts.allow 优先级高于 hosts.deny。
- 修改后务必重启 SSH:sudo systemctl restart ssh。
四 日常运维与审计
- 启停与自启:sudo systemctl start|stop|restart|enable|status ssh。
- 查看账户与登录情况:
- 查看所有用户:cat /etc/passwd;查看用户组:cat /etc/group;
- 查看某用户信息:id username;查看当前登录:w。
- 锁定/解锁账户(临时禁用/恢复):sudo passwd -l username(锁定)、sudo passwd -u username(解锁)。
- 删除用户:
- 保留家目录:sudo deluser username;
- 同时删除家目录与邮件:sudo deluser --remove-home username。
- 安全建议:优先使用 密钥登录、禁用 root 远程登录(PermitRootLogin no)、仅开放必要端口与来源 IP。
五 常见问题排查
- 出现 “Access denied”:检查 /etc/ssh/sshd_config 是否限制了用户(如 AllowUsers)、确认用户已设置密码或已部署公钥、修正 .ssh 目录与 authorized_keys 权限与属主、重启 ssh 服务。
- 新用户仍无法登录:确认 sshd 服务在运行(sudo systemctl status ssh),以及防火墙放行 22 端口(sudo ufw allow 22)。
- 登录提示 “System is booting up. See pam_nologin(8)”:编辑 /etc/pam.d/sshd,注释包含 pam_nologin.so 的行,然后重启 ssh。