仅保留root用户的ssh权限,其他用户只能通过sftp访问
时间: 2024-12-08 21:21:37 浏览: 24
要限制只有 root 用户可以使用 SSH 访问服务器,而普通用户只能通过 SFTP(SSH 文件传输协议)访问,你需要做以下几个步骤:
1. **防火墙设置**:
- 使用如 UFW (Uncomplicated Firewall) 或者 firewall-cmd 等工具,允许 root 用户通过 SSH 登录,但阻断所有非 root 的 SSH 连接。
```
ufw allow ssh from any to any matching "user root"
```
2. **更新 SSH 配置**:
对于 Ubuntu 或 Debian 系统,编辑 `/etc/ssh/sshd_config` 文件,在 `PermitRootLogin` 设置项下设为 `no`,这样默认不允许 root 用户通过 SSH 登录。然后启用 SFTP,可以添加以下行:
```
Subsystem sftp internal-sftp
```
并重启 SSH 服务使配置生效:
```
sudo service ssh restart
```
3. **限制 SFTP 用户**:
- 创建一个新用户(如 `sftp_user`),并给予只读文件权限。
```
sudo useradd -ms /bin/bash sftp_user
sudo chown -R sftp_user:sftp_user /var/run/sftp-server
sudo chmod -R go-rwx /var/run/sftp-aG sftp sftp_user
```
4. **配置 SFTP**:
- 重启 SFTP 服务:
```
sudo service vsftpd restart
```
或者
```
sudo systemctl restart vsftpd
```
现在,只有 root 用户能通过 SSH 登录,而其他用户需要通过 `sftp user@your_server` 来通过 SFTP 访问。
阅读全文