首页/发现新知
视界 · 深度阅读

如何限制Ubuntu SSH用户

在 Ubuntu 上“限制 SSH 用户”通常包含几类需求,下面按常见场景给你一套实用做法(基于 OpenSSH)。


一、限制「哪些用户/组」可以登录 SSH

编辑 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

1️⃣ 只允许指定用户

AllowUsers alice bob

⚠️ 未列出的用户将无法登录(包括 root)。

2️⃣ 只允许指定用户组

AllowGroups sshusers

然后把用户加入组:

sudo adduser alice sshusers

3️⃣ 禁止某些用户

DenyUsers testuser
DenyGroups nogroup

修改后重启 SSH:

sudo systemctl restart ssh

二、禁止 root 直接登录(强烈推荐)

PermitRootLogin no

三、限制用户只能使用密钥登录(禁用密码)

PasswordAuthentication no
PubkeyAuthentication yes

用户需提前配置:

ssh-copy-id user@server

四、限制用户「只能 SFTP,不能 SSH」(最常见)

1️⃣ 创建用户

sudo adduser sftpuser
sudo usermod -s /usr/sbin/nologin sftpuser

2️⃣ 配置 SSH

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

3️⃣ 设置目录权限(非常关键)

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

五、限制用户「登录后的权限」(系统层面)

1️⃣ 使用 sudo 限制命令

sudo visudo

示例:

alice ALL=(ALL) /usr/bin/systemctl restart nginx

2️⃣ 使用受限 shell

sudo usermod -s /bin/rbash username

六、限制来源 IP(安全加固)

方法 1:SSH 配置

Match User alice
    AllowTcpForwarding no

方法 2:防火墙(推荐)

sudo ufw allow from 192.168.1.0/24 to any port 22

七、查看谁登录过 SSH

last
journalctl -u ssh

总结对照表

需求 做法
限定登录用户 AllowUsers
禁止 root PermitRootLogin no
禁止密码 PasswordAuthentication no
只能 SFTP Match + internal-sftp
限制命令 sudo / rbash
限制 IP ufw

如果你能告诉我:

  • 是服务器多人共用?
  • 还是只给客户 SFTP?
  • 还是禁止某些用户 SSH 但保留系统账号?

我可以给你一套精确配置示例。

读到这里,发现更多一点。探索更多内容 ↗