权限是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)。