防火墙可能阻止SFTP默认端口(22)的连接,导致超时报错。
sudo systemctl status firewalld(若未运行,可跳过后续步骤)。sudo firewall-cmd --permanent --add-port=22/tcp(或使用--add-service=sftp简化操作)。sudo firewall-cmd --reload。SSH服务(sshd)是SFTP的基础,其配置错误可能导致连接超时。
sudo vi /etc/ssh/sshd_config。Subsystem sftp /usr/libexec/openssh/sftp-server(或internal-sftp,取决于系统版本);chroot限制用户目录,需确保Match Group或Match User块中的ChrootDirectory路径正确(如/home/%u),且该目录属主为root、权限为755。sudo systemctl restart sshd。网络问题(如路由故障、端口阻塞)是连接超时的常见原因。
ping命令测试服务器可达性:ping <服务器IP>(若超时,需检查网络线路或服务器网络配置)。telnet命令测试22端口是否开放:telnet <服务器IP> 22(若提示“Connection refused”,说明端口未开放,需检查防火墙或SSH服务是否运行)。SELinux可能限制SFTP服务的访问权限,导致连接超时。
sudo sestatus(若为Enforcing模式,需调整策略)。sudo setenforce 0(若禁用后问题消失,需修改SELinux策略或永久禁用:sudo vi /etc/selinux/config,将SELINUX=enforcing改为disabled)。chroot场景):sudo chcon -Rv --reference=/ /home/<用户名>(将用户目录的上下文设置为与根目录一致)。SSH连接的空闲超时设置过短可能导致连接断开。
sudo vi /etc/ssh/sshd_config。TCPKeepAlive yes:保持TCP连接活跃;ClientAliveInterval 60:服务器每60秒向客户端发送一次空闲数据包;ClientAliveCountMax 3:若客户端连续3次未响应,服务器断开连接(总超时时间为180秒)。sudo systemctl restart sshd。系统资源不足(如内存耗尽、CPU过载)或连接数超过限制,可能导致新连接超时。
sudo top(重点关注Mem、CPU占用率,若过高需优化或扩容)。sudo cat /etc/ssh/sshd_config | grep MaxStartups(默认值为10:30:100,表示允许最多10个并发连接,超过后逐步拒绝)。sudo sed -i '/#MaxStartups 10:30:100/MaxStartups 10000/g' /etc/ssh/sshd_config,然后重启SSH服务。日志文件包含连接超报错的详细信息,有助于精准定位问题。
sudo tail -f /var/log/secure(实时监控日志);sudo tail -f /var/log/auth.log。Connection timed out(网络问题)、Permission denied(权限问题)、Invalid user(用户不存在)、Could not resolve hostname(DNS解析问题)。通过以上步骤逐一排查,可有效解决CentOS上SFTP连接超时问题。若问题仍未解决,建议联系网络管理员或服务提供商进一步检查网络环境。