首页 > 编程知识 正文

ftp能连接但是不能看目录,ftp只能看到目录无法

时间:2023-05-05 01:27:15 阅读:192582 作者:4852

FTP登录成功,但是无法显示目录 记录一次FTP登陆成功,但是无法显示目录的解决方式事情背景起因登录失败解决过程Step 1Step 2Step 3Step 4Step 5 后记 友情链接

记录一次FTP登陆成功,但是无法显示目录的解决方式 事情背景

近来突然萌生了搭建一个博客的想法,便委托朋友帮我在他的服务器上搭了一个Typecho,博客地址。
等他帮助我搭建完成以后,便给我开了一个FTP账号,方便让我自己上传文件。
在得到该FTP的账号密码之后,我便开始了此次登录FTP服务器的艰难历程。

起因

说起FTP,我第一反应是直接通过 Windows自带的文件资源管理器或者浏览器来登录FTP,主要是懒不想下载第三方软件。

在经历了N次打开浏览器(文件资源管理器)——输入账号密码后,出现了登录成功但是无法显示文件的问题。

对此现象,我的猜测是:Windows的文件资源管理器或浏览器可能无法直接连接FTP,应该需要下载第三方的软件。

然后我便打开浏览器,开始搜寻好用、免费的FTP客户端。

登录失败

首先,我下载了 FileZilla 这个软件,官网下载地址

经过一系列的下载、安装之后,我打开了该软件。正确填入FTP地址、用户名、密码,提示登录成功。在我以为一切都是这么顺利的时候,出现了状况:提示读取目录列表失败。

状态: 正在连接 xxx.xxx.xxx.xxx:21…
状态: 连接建立,等待欢迎消息…
状态: 明文 FTP 不安全。请切换到 FTP over TLS。
状态: 已登录
状态: 读取目录列表…
命令: PWD
响应: 257 “/” is your current location
命令: TYPE I
响应: 200 TYPE is now 8-bit binary
命令: PORT xxx,xxx,xxx,xxx,xx,xxx
响应: 200 PORT command successful
命令: MLSD
错误: 20 秒后无活动,连接超时
错误: 读取目录列表失败

我一开始以为是个小问题,然后问我朋友解决方案,他告诉我需要改成主动模式。我在听从他的建议后,改成了主动模式。然后登录,依旧是在“错误:读取目录列表失败”这个步骤断开连接。
然后我开始借助搜索引擎的力量开始搜索。

解决过程

Step 1

在通过Bing搜索和Baidu搜索后,我发现网络上的解决办法大同小异,主要解决方式为如下几个:

连接模式修改为主动连接(上面使用过,但是没有解决问题)修改软件设置 - FTP - 主动模式 - 限制本地端口查看并修改Windows防火墙。

于是我便开始依次尝试以上的解决方案。

在尝试完方案2和方案3后,读取目录失败的问题依旧没有解决,然而时间已经很晚。于是便决定第二天去公司后,使用公司的电脑和网络进行尝试。

Step 2

第二天,在公司忙完手头上的工作后,便开始继续着手解决该问题。首先下载FileZilla软件,验证是否可以正常使用。在经历下载——安装——输入FTP地址、用户名和密码后,也出现了“读取目录列表失败”的问题。于是我开始按照Step 1的方式来进行尝试。

在使用Step 1中第二个方案,也就是通过修改软件的限制本地端口的方式,我成功连接到了FTP服务器并读取了目录列表。到这里,我开始琢磨,为什么家里的电脑,使用同样的方式,只能连接上服务器,但是无法读取目录。

Step 3

回到家里,我便再一次打开了FileZilla软件,开始重新限制本地端口60000-65535。并且在限制本地端口后,进入Windows 的高级安全 Windows Defender 防火墙,添加了一条入站规则,同时放开了UDP和TCP的60000-65535端口。然而不幸的是,在连接FTP服务器的过程中,还是出现了登陆成功,但是无法读取目录的情况。

到这里,我所搜寻到的网上所有的解决方式对我都无效。我便开始自己琢磨。

Step 4

首先寻求朋友的帮助,他表示先换个软件试试,可能是软件的问题。于是我便下载了另外两个软件WinSCPXftp
在使用这两个软件之后,能登陆成功但是无法读取目录的问题依旧出现。
WinSCP提示失去连接。列出’/'的目录项时出错,软件截图如图一:

Xftp提示无法显示远程文件夹,软件截图如图二:

这个问题依旧存在!!!

Step 5

作为一名刚入门的网络工程师,网络的知识多少懂一点。于是我便打开了Wireshark,尝试进行抓包,看能不能从抓包中获取到有用的线索。经过一番操作后,抓出来的几个数据包引起了我的注意,如下图:

在图三,编号5223的这个包返回的时候报文内容有如下字样:Could not open data connection to port 14821……“无法打开到端口14821的数据连接……”。数据连接?欸,好像哪里不对???。

众所周知,FTP在连接和传输数据分别用到了两个不同的端口21和20。其中,21用于连接,20用于传输数据。那既然这里写的是无法打开到端口14821的数据连接,那么就很有可能是TCP 20这个传输数据的端口出了问题。

和端口相关的软件和硬件一般都有哪些呢?杀毒软件、防火墙、路由器、光猫。我便开始一个个的开始排查:

查看火绒——安全设置——高级防护,发现自定义防火、IP黑名单、IP协议控制 都是空白,所以跟杀毒软件应该没有关系;使用CMD的netstat -ano命令,查看是否有其他软件占用了该端口,并没有,那么跟其他软件也应该没有关系;打开 Windows 的高级安全 Windows Defender 防火墙,查看是否有限制20端口的规则,也没有,看样子和 Windows 的防火墙也没关系;

截止到现在,本地的软件和网络部分都已经查完了,都没有问题,难道是路由器或者光猫上出现了问题?想到这一点后,我立刻打开浏览器,登录上了路由器和光猫的管理页面,开始查看路由器和光猫的设置:

首先是路由器,我使用的路由器是 TP-Link 的 TL-WDR5620 千兆版 路由器 ,经过查找Web控制页面,该型号的路由器并没有可以控制端口号的高级功能,所以跟路由器也应该没有任何关系。那现在就只剩下光猫了,于是我在光猫的设置里一通寻找,发现跟端口号相关的貌似只有安全——端口过滤中这个条目可以控制端口,然而我的光猫该条目并没有启用端口过滤,如图四。难道还有其他可以控制端口的地方?
经过仔细的逐条寻找,我终于在应用——高级NAT配置——ALG设置中找到了启用FTP的选项,这个选项居然默认是 关!掉!的!。如图五。
当我点击启用FTP后面的勾,并且保存后。奇迹出现了,我变成了光现在可以成功的获取到了FTP目录列表了。如图六。
后记

经过为期两天的查找,最终还是解决了该问题。没想到这么简单的一个问题,居然出现在了最容易忽略的地方,毕竟一开始谁能想到去查光猫呢。果然,解决问题的最好方式,还是自己去动手尝试。虽然可能效率不高且解决过程满是曲折,但是解决的过程总是充满乐趣。

友情链接

朋友的Blog:梦笑颜の博客

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。