在 Debian 上,SFTP 本身是依赖 SSH(OpenSSH)服务的,严格来说 不能“完全禁用 SSH 而保留 SFTP”,因为 SFTP 是通过 SSH 协议传输的(sftp-server 由 sshd 启动)。
但你可以通过以下几种方式**“禁用 SSH 登录,只保留 SFTP”**,这通常才是你想要的效果。
usermod -s /usr/sbin/nologin username
或
usermod -s /bin/false username
这样用户:
编辑:
/etc/ssh/sshd_config
添加或修改:
Match User username
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /home/username
AllowTcpForwarding no
X11Forwarding no
重启 SSH:
systemctl restart ssh
效果:
如果你是想 彻底关闭 SSH 服务:
systemctl stop ssh
systemctl disable ssh
⚠️ 注意:这样 SFTP 也会一并不可用
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
创建用户组:
groupadd sftpusers
usermod -G sftpusers username
| 需求 | 方法 |
|---|---|
| 禁止 shell,保留 SFTP | ForceCommand internal-sftp |
| 禁止 SSH 登录 | nologin / false |
| 彻底关闭 SSH | systemctl disable ssh |
| 安全 SFTP 隔离 | ChrootDirectory |
如果你能说明:
我可以给你一份可直接用的完整配置。