linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)
首先FTP的运行模式有主动模式和被动模式两种
然后笔者在工作中搭建了ftp,但是没有开启他的被动模式。
然后server端的防火墙开放了21端口。
因此客户端能连上server,但是输入命令会提示。(首先要数据passive off命令关闭客户端以被动模式连接server端)
修改模式
Windows Cmd下默认为主动模式,更改Ftp为被动的方法:
ftp> quote PASV
Linux Ftp命令下默认为被动模式,更改为主动的方法:
ftp> passive
原因是ftp在主动模式下是通过21端口进行登陆的,但是后续是通过20端口与客户端进行数据交换。
因此笔者在这个基础上,在server开放了20端口。
但是问题依旧
接着笔者在客户端也把20和21端口都打开了
但是问题还是没有解决
这个时候无论是server端还是client端的20和21端口都是开放的。但是数据的传输都还是有阻碍。
查阅了很多网上的解决方案,都是说让FTP开发被动模式,然后防火墙开放对应的端口段。
但是老子就是要用主动模式。也不是说不能弄个被动模式,但是那样子解决问题就好像是在逃避问题一样!
然后笔者想起防火墙中除了根据端口开发流量,还可以根据服务开放流量。
因此在server端的防火墙中开放ftp服务
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
结果还是不行
于是我又在客户端的防火墙中开放ftp服务
终于可以了!!!
因此,可能是需要客户端和服务器同时在防火墙中开放ftp服务。那么才能在命令行下进行数据传输吧(windows的cmd下面和一些FTP客户端选择主动模式连接,皆不会出现上述情况!),也不知道为什么是在linux的命令行下才会这样。