SFTP 在 Linux 下传不了文件,常见原因和排查思路如下,你可以按顺序对照:
sftp user@host
systemctl status sshdiptables -L / firewall-cmd --list-all排查:
ls -l 本地文件
ls -ld 远端目录
解决:
chmod 644 文件
chmod 755 目录
远端磁盘满了会导致写入失败:
df -h
服务器可能限制了用户:
检查 /etc/ssh/sshd_config:
Subsystem sftp internal-sftp
Match User xxx
ChrootDirectory /data/sftp
ForceCommand internal-sftp
注意:
ChrootDirectory 必须 root 拥有且 755getenforce
如果是 Enforcing,可临时测试:
setenforce 0
长期解决需改策略或上下文。
正确示例:
sftp> put localfile
sftp> get remotefile
错误示例:
putSFTP 基于 SSH,一般不存在 FTP 的被动问题,但如果是 FTPS/FTP 才会涉及。
传文件时看完整报错,例如:
Permission deniedNo such file or directoryWrite failed把报错贴出来,我可以直接帮你判断。
如果 SFTP 实在不行:
scp 文件 user@host:/路径
rsync -avz 文件 user@host:/路径
如果你愿意,可以把:
sshd_config 相关配置发出来,我帮你精准定位。