linux 仅保留root用户的ssh权限,其他已建立的用户如hn4301、hn4302、hn4303只能通过sftp访问
时间: 2024-12-08 15:21:26 浏览: 24
在Linux系统中,如果你想要限制非root用户只通过SFTP(安全文件传输协议)访问而不允许SSH( Secure Shell)登录,可以按照以下步骤操作:
1. **禁用普通用户的SSH登录**:
- 打开`/etc/ssh/sshd_config` 文件,通常是一个文本编辑器(如nano或vi)里的内容。
- 搜索 `PermitRootLogin` 行,将其设置为 `no`,以禁止所有用户,包括root,通过SSH登录,只保留root SSH权限。例如:
```
PermitRootLogin no
```
2. **配置SFTP服务**:
- 确保 `Subsystem` 配置了 SFTP支持,如果没有,添加以下行:
```
Subsystem sftp /usr/libexec/openssh/sftp-server
```
3. **启动并启用SFTP**:
- 使用命令 `sudo service ssh restart` 或 `sudo systemctl restart ssh` 重启SSH服务,使之加载新的配置。
4. **为普通用户创建SFTP只读权限**:
- 对于每个需要SFTP访问的用户(比如hn4301、hn4302等),在 `/etc/ssh/sshd_config` 中找到他们的主目录路径(通常是`Match User hn4301`),然后添加:
```
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
```
这里`ChrootDirectory`将用户限制在其主目录内,`AllowTcpForwarding no`关闭端口转发,`ForceCommand internal-sftp`强制使用内部SFTP服务器。
5. **测试并验证**:
- 重启SSH服务后,只有root用户能通过SSH登录,而hn4301、hn4302等用户则需要在客户端上通过SFTP连接到它们的相应目录。
阅读全文