SFTP连接Debian失败怎么解决
导读:按下面顺序从服务、配置、权限、网络四个维度排查,通常可在几分钟内定位并恢复 SFTP 连接。 一 快速自检 确认 SSH 服务已运行(Debian 上服务名通常为ssh,部分教程写作 sshd): sudo systemctl stat...
按下面顺序从服务、配置、权限、网络四个维度排查,通常可在几分钟内定位并恢复 SFTP 连接。
一 快速自检
- 确认 SSH 服务已运行(Debian 上服务名通常为ssh,部分教程写作 sshd):
sudo systemctl status ssh
未运行则启动:sudo systemctl start ssh;修改配置后重启:sudo systemctl restart ssh。 - 直接用命令行测试连接:sftp 用户名@服务器IP,观察报错关键词(如 Authentication failed、Permission denied、Connection refused、Timeout)。
- 查看实时日志,优先看认证日志:sudo tail -f /var/log/auth.log;或使用 journalctl:sudo journalctl -u ssh -f。
以上能快速判断是服务未起、认证失败还是配置/权限问题。
二 配置与权限关键点
- 核对 SFTP 子系统配置(/etc/ssh/sshd_config):
推荐使用内置模块:
Subsystem sftp internal-sftp
若改为外部程序,路径必须存在(可用 which sftp-server 确认),否则会报 “Subsystem not found”。修改后重启 ssh 生效。 - 如需将用户限制在家目录(Chroot),典型配置:
Match Group sftp_users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
要点:Chroot 目录必须存在、属主为 root、权限 755;否则会出现 “Cannot change directory”。 - 用户与目录权限范式:
- 创建组:sudo groupadd sftp_users
- 加入用户:sudo usermod -a -G sftp_users 用户名
- 家目录:sudo chown root:root /home/用户名 & & sudo chmod 755 /home/用户名
- 上传目录:mkdir /home/用户名/uploads & & sudo chown 用户名:sftp_users /home/用户名/uploads & & sudo chmod 755/775 /home/用户名/uploads
- 认证方式:
- 密码登录:确保密码正确、账户未锁定。
- 密钥登录:公钥需置于用户 ~/.ssh/authorized_keys,文件权限 600,.ssh 目录 700;若使用 root 登录,确认 PermitRootLogin 配置允许。
这些是保证 SFTP 子系统可用、目录可访问、认证能过的关键。
三 网络与防火墙
- 本机与云侧放行 22/TCP(或自定义端口):
- UFW:sudo ufw allow 22/tcp 或 sudo ufw allow ssh;sudo ufw enable/status 查看规则。
- firewalld:sudo firewall-cmd --permanent --add-port=22/tcp & & sudo firewall-cmd --reload。
- 云服务器安全组需同样放行对应端口。
- 连通性测试:
ping 服务器IP
telnet 服务器IP 22 或 nc -zv 服务器IP 22
若超时,优先排查本机/边界防火墙、NAT/路由、云安全组。 - 端口冲突或自定义端口:
若 22 被占用,可在 /etc/ssh/sshd_config 中改为 Port 2222,并同步更新防火墙/安全组规则。 - 连接数限制:
检查 MaxStartups(如 10:30:100),并发未认证连接过多会被拒绝,可按需调大或临时放宽用于排查。
以上步骤可排除“连不上/被拒绝/超时”等网络层问题。
四 常见报错对照与修复
| 报错关键词 | 典型原因 | 修复要点 |
|---|---|---|
| Authentication failed | 密码错误、账户被锁、密钥未正确部署 | 核对密码/解锁账户;检查 ~/.ssh/authorized_keys 权限 600 与内容;必要时用 ssh-keygen -y 校验私钥对应公钥 |
| Permission denied | 家目录或上传目录权限/属主不当、Chroot 目录非 root 所有 | 家目录 root:root 755;上传目录 用户名:sftp_users 755/775;Chroot 目录必须 root 所有 755 |
| Connection refused | SSH 服务未运行、端口不对、配置语法错误 | systemctl status/start/restart ssh;确认 Port 与防火墙一致;sshd_config 语法无误再重启 |
| Connection timed out | 防火墙/安全组/网络不通 | 放行 22/TCP;检查云安全组、路由/NAT;用 telnet/nc 验证端口连通 |
| Cannot change directory | Chroot 路径不存在或权限错误 | 创建目录、设置 root:root 755,再重试 |
| Subsystem not found | Subsystem 路径错误或二进制不存在 | 改为 internal-sftp 或用 which sftp-server 校正路径后重启 ssh |
| “Write failed. Broken pipe” | 资源/连接数限制、磁盘满、权限不足 | 检查磁盘空间 df -h;放宽 MaxStartups;确认上传目录可写 |
| 以上对照覆盖了大多数 SFTP 连接故障场景,可据此快速定位并修复。 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SFTP连接Debian失败怎么解决
本文地址: https://pptw.com/jishu/783768.html
