权限是SFTP文件传输中最常见的错误来源。需确保:
chmod 755 /path/to/remote/directory
,避免使用777
(安全风险))。chroot
限制用户访问,主目录需归root
所有且权限为755
(如sudo chown root:root /sftp_root && sudo chmod 755 /sftp_root
)。chown
命令将目录所有者设为用户(如sudo chown sftpuser:sftp_users /sftp_root/sftpuser
)。sudo systemctl status ssh
,若未运行则sudo systemctl start ssh
)。/etc/ssh/sshd_config
,确保以下配置正确: Subsystem sftp internal-sftp
(启用SFTP子系统);Match Group sftp_users\n ChrootDirectory /sftp_root\n ForceCommand internal-sftp\n AllowTcpForwarding no\n X11Forwarding no
(替换为实际组名和目录);sudo systemctl restart ssh
)。ping server_ip
)。sudo ufw allow 22
开放防火墙端口(若使用云服务器,需检查安全组设置)。ssh -v user@host
调试连接)。df -h
查看服务器磁盘使用情况,若空间不足,清理无用文件(如sudo apt autoremove
或删除旧日志)。ls /path/to/remote/directory
),避免特殊字符或空格。若以上方法无效,通过日志获取详细错误信息:
sudo tail -f /var/log/auth.log
实时查看SSH/SFTP日志,根据日志提示(如“Permission denied”“No such file or directory”)针对性解决。使用命令行工具排查客户端问题:
sftp username@hostname
,输入密码后尝试ls
(查看远程目录)、put local_file remote_path
(上传文件)、get remote_file local_path
(下载文件),观察具体错误信息(如“Connection refused”“Not a directory”)。sftp_users
),用sudo usermod -aG sftp username
添加组,注销后重新登录。sudo setsebool -P sftp_home_dir on
)并调整安全上下文(sudo chcon -Rv --reference=/var/www/html /home/username/uploads
)。