发布于2026-07-06 阅读(0)
扫一扫,手机访问
SFTP故障排查,说得玄乎其实就那么几件事。不管是连接超时、认证失败还是权限报错,底层逻辑都是固定的。下面这份清单把常见问题、定位流程和配置模板都梳理出来了,跟着走一遍,大部分问题都能解决。

碰到SFTP连不上,别急着改配置,按下面几步来,基本能锁定问题范围。
服务与端口:先确认sshd是否在运行,22/TCP端口是否在监听。用 sudo systemctl status sshd 看一眼,如果挂了直接 sudo systemctl restart sshd 重启。这是最基础但也是最容易被忽略的一步。
防火墙与云安全组:检查本地防火墙和云平台的安全组规则,22/TCP必须放行。命令:sudo firewall-cmd --list-all 查看当前规则;添加规则用 sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload。注意云厂商的控制台里也得配。
连通性:先 ping 看网络通不通,再用 telnet 服务器IP 22 验证端口是否可达。如果ping通但telnet不通,多半是防火墙或安全组拦了。
配置校验:检查 /etc/ssh/sshd_config 中SFTP子系统配置是否正确。常见写法:Subsystem sftp /usr/libexec/openssh/sftp-server 或 Subsystem sftp internal-sftp。推荐用后者,更安全且支持Chroot。
日志定位:实时查看认证与连接日志,这是最直接的信息源。RHEL/CentOS用 sudo tail -f /var/log/secure,Debian/Ubuntu用 sudo tail -f /var/log/auth.log。报错信息会告诉你具体原因。
客户端调试:用 sftp -v 启动详细输出,能看到握手、算法协商、认证过程。很多隐蔽问题(比如密钥格式、算法不匹配)都能在这里暴露出来。
不同症状对应不同原因,对号入座能省不少时间。
sudo chage -l 用户名 查看密码有效期。sshd_config 中修改端口后同步客户端配置。sshd_config 中指定 Ciphers 和 KexAlgorithms)。权限问题是SFTP故障的重灾区,尤其是用了Chroot之后。
用户家目录和上传目录的属主、权限要正确。示例:chown username:username /home/username;chmod 755 /home/username;chmod 775 /home/username/uploads。注意目录权限不能太松,也不能太紧。
如果用了 internal-sftp 或 ChrootDirectory,必须遵守以下规则:
~/uploads,属主设为用户本身,权限775。这条规则踩坑率极高,很多人直接把用户家目录设为Chroot,结果忘了上级目录权限,导致“Connection reset by peer”。
如果启用了SELinux,需要检查并调整策略。用 sudo sestatus 查看状态;必要时 sudo setsebool -P sftp_home_dir on 允许SFTP访问家目录;目录安全上下文可以用 semanage fcontext 和 restorecon 修复。
所有配置修改后,务必执行 sudo systemctl restart sshd 使其生效。
以下命令按场景整理,方便快速复制粘贴。
sudo systemctl status sshdsudo firewall-cmd --list-all;sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reloadsudo ss -tnlp | grep :22 或 netstat -tnlp | grep :22ping 服务器IP;telnet 服务器IP 22sudo tail -f /var/log/secure(RHEL/CentOS),sudo tail -f /var/log/auth.log(Debian/Ubuntu)top、free -m、df -h(排查负载、内存、磁盘空间不足)sftp -v user@hostsudo grep MaxStartups /etc/ssh/sshd_config,如果并发连接过多,可以调大这个值并重启sshd。下面是一个经过验证的最小可用配置,适合快速搭建一个带Chroot的SFTP用户。直接复制、修改变量,就能跑通。
sudo useradd -m -d /data/sftp/%u sftpuser
echo "sftpuser:YourStrongPass!" | sudo chpasswd
sudo chown root:root /data/sftp/sftpuser && sudo chmod 755 /data/sftp/sftpuser
sudo mkdir -p /data/sftp/sftpuser/uploads && sudo chown sftpuser:sftpuser /data/sftp/sftpuser/uploads && sudo chmod 775 /data/sftp/sftpuser/uploads
建议先备份原文件,再添加以下内容:
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo systemctl restart sshd
sftp -v sftpuser@服务器IP
如果仍然失败,立刻用 tail -f /var/log/secure 查看具体报错,对照上面的排查要点处理。一般来说,只要Chroot目录权限和属主没问题,都能一次过。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8