故障描述
使用客户端连接服务端时,提示连接服务端地址失败或者连接超时。
约束与限制
本文档适用于本地主机为windows系统上的FTP服务。
故障原因
- 服务端FTP防火墙或者安全组配置错误导致请求被拦截。
- FTP身份验证选择的类型与实际访问方式不匹配。
解决步骤
服务端为windows系统(以windows Server 2012版本为例)
-
检查服务端的FTP防火墙支持配置
点击" 服务器管理器 -> 工具 -> Internet Information Services(IIS)管理器" ,然后选择左边栏点击 网站 。首先查看建立的FTP绑定的ip是否填写的是内网ip,类型为FTP。图1 查看FTP绑定IP
展开 网站 ,会显示建立的ftp服务,双击右侧的FTP防火墙支持。图2 FTP防火墙支持
数据通道端口范围需要填写1024-65535范围内的,比如20000-20045。
防火墙的外部IP地址这一栏需要填写给弹性云主机分配到的 公网IP 。 -
检查FTP身份验证类型
双击 FTP身份验证 ,这里需要注意,如果基本身份验证开启,那么是需要填写用户名和密码的。如果开启的是 匿名身份验证 ,那么连接时不能填写用户名和密码,否则会报连接失败。 -
检查安全组设置
点击" 控制中心->服务列表->弹性云主机" ,选择对应的可用区,然后再展示出来的弹性云主机列表里选择需要的弹性云主机,然后双击这个弹性云主机,即可打开详情页面。在下方选择" 安全组" ,然后查看详细的安全组配置,是否在入方向里已经正确配置了端口21和上面配置的数据通道端口这两条。
图3 安全组配置
服务端为Linux系统(以Centos7.2 64位操作系统为例)
-
检查配置文件
执行以下命令,检查配置文件。cat /etc/vsftpd/vsftpd.conf
确保下面的内容已经正确填入。
listen=YES listen_ipv6=NO pasv_address=xx.xx.xx.xx #弹性云主机的公网IP地址 pasv_min_port=20000 #被动模式下的最小端口 pasv_max_port=20045 #被动模式下的最大端口
-
检查安全组配置
点击 控制中心 -> 服务列表 -> 弹性云主机 ,选择对应的可用区,然后再展示出来的弹性云主机列表里选择需要的弹性云主机,然后双击这个弹性云主机,即可打开详情页面。在下方选择 安全组 ,然后查看详细的安全组配置,是否在入方向里已经正确配置了端口21和配置文件“/etc/vsftpd/vsftpd.conf”中参数“pasv_min_port”和“pasv_max_port”之间的所有端口。 -
重新进行客户端测试
a. 一种方法是使用FileZilla填写弹性云主机的公网ip,ftp的用户名和密码,端口填写21。
b. 另一种方法是在浏览器或者文件夹访问栏输入ftp://弹性云主机公网ip:服务端的端口(如果不填为21),然后在弹出的对话框里输入ftp的用户名和密码。