SFTP基于SSH协议运行,若SSH服务未启动或未设置为开机自启,会导致SFTP无法连接。需通过systemctl status sshd检查服务状态,未运行时用systemctl start sshd启动,用systemctl enable sshd设置开机自启。
/etc/ssh/sshd_config配置文件错误该文件是SFTP的核心配置文件,常见错误包括:
Subsystem sftp行被注释(以#开头)或路径错误(如未使用internal-sftp或正确路径/usr/libexec/openssh/sftp-server)。Match User或Match Group限制用户/组,语法错误(如拼写错误、未正确缩进)会导致配置不生效。sshd -t检查语法,避免因语法错误导致服务重启失败。ChrootDirectory限制用户根目录,该目录及其上级目录必须属于root(所有者为root,属组为root),权限不能超过755(如chown root:root /data/sftp/%u; chmod 755 /data/sftp/%u)。/home/username)权限需设置为755,避免用户无法访问自己的目录。chmod 755 /data/sftp/username/upload)。CentOS默认使用firewalld或iptables,若未开放SFTP端口(默认22),会导致连接被拒绝。需通过以下命令开放端口:
firewalld:firewall-cmd --permanent --add-service=sftp; firewall-cmd --reloadiptables:iptables -A INPUT -p tcp --dport 22 -j ACCEPT; service iptables save。若SELinux处于Enforcing模式,可能阻止SFTP访问用户目录。可通过以下方式解决:
Permissive模式(测试用):setenforce 0/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissivesetsebool -P sftp_home_dir on(允许访问家目录)。passwd命令重置密码。chage -l username检查密码有效期,若已过期,用chage -M 90 username延长有效期(如90天)。id_rsa.pub)复制到~/.ssh/authorized_keys,并设置正确权限(chmod 600 ~/.ssh/authorized_keys)。旧版OpenSSH(如低于4.8p1)可能不支持部分SFTP配置选项(如ChrootDirectory、ForceCommand)。需通过yum update openssh-server升级到最新版本。
若使用ChrootDirectory,需确保用户根目录结构正确(如/data/sftp/username),且用户只能访问该目录下的文件。若目录结构缺失或权限错误,会导致登录后无法操作。
日志文件(/var/log/secure或/var/log/auth.log)记录了SFTP连接的详细错误信息(如“Permission denied”“No such file or directory”),通过tail -f /var/log/secure实时查看或grep "sftp" /var/log/secure筛选日志,可快速定位问题根源。