温馨提示×

debian sftp如何禁用ssh

小樊
38
2026-10-12 10:33:24
栏目: 智能运维

在 Debian 上,SFTP 本身是依赖 SSH(OpenSSH)服务的,严格来说 不能“完全禁用 SSH 而保留 SFTP”,因为 SFTP 是通过 SSH 协议传输的(sftp-server 由 sshd 启动)。

但你可以通过以下几种方式**“禁用 SSH 登录,只保留 SFTP”**,这通常才是你想要的效果。


一、只禁止 SSH Shell 登录,只允许 SFTP(最常见)

方法 1:修改用户 shell 为 nologin

usermod -s /usr/sbin/nologin username

或

usermod -s /bin/false username

这样用户:

  • ❌ 无法 SSH 登录 shell
  • ✅ 仍可使用 SFTP

方法 2:在 sshd_config 中限制(推荐)

编辑:

/etc/ssh/sshd_config

添加或修改:

Match User username
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /home/username
    AllowTcpForwarding no
    X11Forwarding no

重启 SSH:

systemctl restart ssh

效果:

  • ❌ 不能执行 shell 命令
  • ✅ 只能 SFTP

二、完全禁止 SSH 远程登录(包括 SFTP)

如果你是想 彻底关闭 SSH 服务:

systemctl stop ssh
systemctl disable ssh

⚠️ 注意:这样 SFTP 也会一并不可用


三、只允许 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

如果你能说明:

  • 是 单用户还是多用户
  • 是否要 chroot 隔离
  • 是否用 密码 / 密钥

我可以给你一份可直接用的完整配置。

0 踩