在 Debian 上“禁止 SFTP 写操作”,常见有 3 种做法,按推荐程度从高到低说明。
readonly 模式(最推荐,Debian 9+)OpenSSH 7.4+ 支持 SFTP 只读模式。
sudo nano /etc/ssh/sshd_config
为指定用户或组添加:
Match User sftpuser
ForceCommand internal-sftp -R
或按组:
Match Group sftp
ForceCommand internal-sftp -R
-R表示 read-only SFTP(禁止上传、删除、改名)
sudo systemctl restart ssh
✅ 优点:简单、官方支持、不影响 SSH 其他功能
如果不想用 -R,可以直接限制目录权限。
chown root:root /srv/sftp
chmod 755 /srv/sftp
用户目录:
chown sftpuser:sftpuser /srv/sftp/upload
chmod 555 /srv/sftp/upload
555 → 只读⚠ 缺点:
rename 等方式“间接写”-R 严格适合完全隔离的 SFTP 服务器
Match User sftpuser
ChrootDirectory /srv/sftp
ForceCommand internal-sftp -R
并挂载只读:
mount -o remount,ro /srv/sftp
sftp sftpuser@host
put test.txt
应出现:
remote write failed
| 需求 | 方案 |
|---|---|
| 仅禁止 SFTP 写 | ForceCommand internal-sftp -R ✅ |
| 同时限制目录 | chroot + -R |
| 极端安全 | 只读挂载 |
如果你能提供:
我可以给你精确配置示例。