CentOS SFTP配置常见错误与排查要点
一 服务与网络连通性
sudo systemctl status sshd,必要时执行 sudo systemctl start sshd && sudo systemctl enable sshd。sudo firewall-cmd --list-all;若未放行,执行 sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload(或放行端口:sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload)。ping <IP>、telnet <IP> 22 或 nc -vz <IP> 22,确认路由与端口可达。ss -tnlp | grep :22,确保 sshd 正在监听。sudo systemctl restart sshd。二 配置语法与关键参数
Subsystem sftp internal-sftp;若使用外部程序,路径通常为 /usr/libexec/openssh/sftp-server(路径因发行版可能不同)。Match User sftpuser
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
internal-sftp 与外部 sftp-server。sudo sshd -t && sudo systemctl restart sshd。三 权限与 Chroot 目录
sudo mkdir -p /data/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /data/sftp/sftpuser/upload
sudo chmod 755 /data/sftp/sftpuser
sudo chmod 775 /data/sftp/sftpuser/upload
sudo systemctl restart sshd。四 SELinux 与日志定位
getenforce(返回 Enforcing/Permissive/Disabled)。sudo setenforce 0(测试用,勿长期关闭)。sudo setsebool -P sftp_home_dir on。sudo semanage fcontext -a -t ssh_home_t "/data/sftp(/.*)?"
sudo restorecon -Rv /data/sftp
journalctl -u sshd -f 实时查看。五 认证方式与连接体验
PasswordAuthentication yes(如需口令登录);密钥登录时,检查用户家目录下 ~/.ssh/authorized_keys 权限为 600、目录 ~/.ssh 为 700,公钥内容正确。GSSAPIAuthentication no,重启服务。