温馨提示×

debian sftp为何连不上

小樊
44
2026-10-27 02:38:16
栏目: 智能运维

Debian 上 SFTP 连不上,常见原因和排查思路如下(按出现频率排序):


1. SSH / SFTP 服务没开

SFTP 依赖 sshd,先确认服务在跑:

systemctl status ssh
# 或老版本
service ssh status

如果没启动:

systemctl start ssh
systemctl enable ssh

2. 防火墙 / 安全组拦截

Debian 默认可能启用 ufw:

ufw status

确保 22 端口开放:

ufw allow 22

云服务器还要检查安全组规则是否放行 22。


3. SSH 配置禁用了 SFTP

检查 /etc/ssh/sshd_config:

grep -i sftp /etc/ssh/sshd_config

应有类似:

Subsystem sftp /usr/lib/openssh/sftp-server

如果被注释或改成 internal-sftp 但配置错误,会导致连不上。

修改后重启:

systemctl restart ssh

4. 用户被限制或 shell 不对

SFTP 用户需要合法 shell 或 ForceCommand 配置。

查看用户 shell:

getent passwd 用户名

如果是 /usr/sbin/nologin 或 /bin/false,普通 SSH 登不了,但 SFTP 仍可工作(前提是配置了 Match User + ForceCommand internal-sftp)。


5. 权限问题(尤其 chroot)

如果用了:

Match User sftpuser
    ChrootDirectory /sftp
    ForceCommand internal-sftp

那么:

  • /sftp 必须 root 拥有
  • 权限不能 group/other 可写(通常是 755)

错误权限会导致连接立即断开。


6. 密码 / 密钥问题

  • 密码错误
  • 密钥权限不对(~/.ssh 700,authorized_keys 600)
  • PasswordAuthentication no 但没配密钥

7. SELinux / AppArmor(较少见)

Debian 默认用 AppArmor,一般不影响 SFTP。


8. 客户端报错对照

客户端提示 可能原因
Connection refused sshd 没开 / 端口错
Connection timeout 防火墙 / 安全组
Permission denied 密码 / 权限
broken pipe chroot 权限错
received disconnect SFTP subsystem 配置错

快速排查命令(服务器端)

journalctl -u ssh
tail -f /var/log/auth.log

如果你愿意,可以把:

  • 客户端报错信息
  • /etc/ssh/sshd_config 相关配置
  • 是否云服务器 / 是否用了 chroot

发出来,我可以直接帮你定位。

0 踩