问题描述:
1、已成功在linux中搭建了ftp服务器,且设置了ftp的账户
2、其ftp软件,包括ftp代码都能访问ftp服务器
3、windows自带的ftp工具反问ftp服务器时,报227 Entering Passive Mode (37,101,21,90,255,121).错误
解决方法:
在网上搜索答案,发现大部分都是说ftp的模式,将主动该被动或者被动该主动,但是我都试过,没用,任然时报这个错误。
最终在stackoverflow中找到答案:
首先,我们先要知道227 Entering Passive Mode (37,101,21,90,255,121)中(37,101,21,90,255,121)的数字时代表什么意思,前四个数字代表我的ftp服务器返回的地址,而后面两个可以通过计算(p1256 + p2 = 255256+121=65401)得到ftp服务器开放的数据传输端口,需要我们的客户端通过这个ip和端口号去连接服务器(即,我的客户端需要去连接的ftp地址为:37.101.21.90:65401),连接成功后就就可以上传数据了。
然后我发现37.101.21.90是我ftp服务器的内网ip,并不是公网ip,所以使用weindows没法建立连接。
最后,我去查看了ftp的配置文件资料,发现ftp的被动模式返回的IP是可以设置的,只要将返回的ip设置成服务器的公网ip就行了。因此我将如下设置添加到ftp配置文件中,重启ftp后,使用windows果然能进行访问了。
pasv_address=39.10.6.90
本文参考:https://stackoverflow.com/questions/9966993/how-to-get-port-in-ftp-protocol-from-passive-mode