温馨提示×

如何调试debian sftp错

小樊
41
2026-10-27 02:48:17
栏目: 智能运维

调试 Debian 上的 SFTP 连接错误,可以按下面系统化的步骤来排查。SFTP 一般基于 OpenSSH(sftp-server),常见问题是权限、配置、SSH 服务、防火墙、SELinux/AppArmor 等。


一、确认基础信息

先明确:

  • 客户端命令(示例):
    sftp user@host
    
  • 服务端系统:
    lsb_release -a
    ssh -V
    

二、查看客户端错误信息

在客户端加 -v(或 -vvv)查看详细日志:

sftp -vvv user@host

重点关注:

  • 是否连上 SSH
  • 是否提示 permission denied
  • 是否卡在 debug1: subsystem request

三、服务端 SSH / SFTP 日志(最关键)

在 Debian 上,SSH 日志通常在:

/var/log/auth.log

实时查看:

tail -f /var/log/auth.log

然后客户端再连一次,观察错误,例如:

  • subsystem sftp not found
  • Permission denied (publickey,password)
  • bad ownership or modes for chroot

四、检查 SSH 配置

编辑:

/etc/ssh/sshd_config

确认以下项:

Subsystem sftp internal-sftp

如果使用 chroot:

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

修改后重启:

systemctl restart ssh

五、权限问题(最常见)

1. 用户家目录权限

chown root:root /home/user
chmod 755 /home/user

⚠️ Chroot 目录必须属主为 root,且其他用户不可写

2. SFTP 上传目录

mkdir /home/user/upload
chown user:user /home/user/upload
chmod 755 /home/user/upload

六、测试 SSH 是否正常

SFTP 依赖 SSH:

ssh user@host

如果 SSH 都登不上,SFTP 一定失败。


七、防火墙 / 端口

确认 22 端口开放:

ss -tlnp | grep :22
ufw status

云服务器还要检查 安全组。


八、AppArmor(Debian 常见坑)

查看是否阻止:

dmesg | grep denied

如 sftp-server 被阻:

aa-status

九、常见错误速查表

错误 原因
subsystem request failed sshd_config 没配 sftp
broken pipe chroot 权限错
permission denied 密码/密钥/用户被禁
卡住无响应 防火墙或 ForceCommand 错

十、最小可用示例

sshd_config:

Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp

目录:

mkdir -p /sftp/sftpuser/upload
chown root:root /sftp/sftpuser
chown sftpuser:sftpuser /sftp/sftpuser/upload

如果你愿意,可以把:

  • 客户端报错
  • /var/log/auth.log 相关日志
  • sshd_config 中 SFTP 部分

贴出来,我可以直接帮你定位具体原因。

0 踩