CentOS 下 SFTP 无法连接 常见原因有很多,可以按下面顺序一步步排查(从最常见到较少见)。
SFTP 基于 SSH(22 端口),先测试 SSH:
ssh 用户名@服务器IP
systemctl status sshd
如果没运行:
systemctl start sshd
systemctl enable sshd
firewall-cmd --list-all
如果没有 22 端口:
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
iptables -L -n
编辑 SSH 配置:
vim /etc/ssh/sshd_config
确保有这一行(CentOS 默认有):
Subsystem sftp /usr/libexec/openssh/sftp-server
修改后重启:
systemctl restart sshd
如果你配置了:
Match User xxx
ChrootDirectory /home/xxx
ForceCommand internal-sftp
必须满足:
chown root:root /home/xxx
chmod 755 /home/xxx
否则会 连接立即断开。
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
如果这样能连:
setsebool -P ssh_chroot_rw_homedirs on
或修复目录上下文:
restorecon -Rv /home/xxx
sftp -v user@ip
tail -f /var/log/secure
常见错误:
permission denied → 权限 / 密码broken pipe → chroot / SELinuxconnection refused → 服务没起 / 防火墙passwd -S 用户名df -h如果你愿意,可以把 具体报错信息(客户端 + /var/log/secure)贴出来,我可以直接帮你定位是哪一步的问题。