如何用Telnet列出FTP目录?遇425数据连接错误求解决
FTP被动模式手动Telnet操作的关键遗漏点
嘿,我一眼就看出问题所在了——你用Telnet手动操作时,只完成了控制连接的命令,却没主动建立FTP被动模式需要的数据连接!这就是为什么NLST返回425 Can't open data connection错误的核心原因。
先给你捋清楚FTP被动模式的完整流程,你就明白漏了啥:
- 你已经通过Telnet在21端口建立了控制连接,完成登录,这部分完全没问题
- 发送
PASV后,服务器返回了被动模式的IP和端口(比如你日志里的(192,168,11,24,205,245)),这个端口是需要你手动去建立新连接的 - 而
ftp命令是自动帮你做了「解析端口→建立数据连接→接收数据」这一系列操作,所以它能正常拿到目录列表
正确的手动Telnet操作步骤
按下面的步骤来,就能解决425错误:
- 保持你原来的控制连接窗口不变(已经登录成功的那个):
telnet -e _ 192.168.11.24 21 # 输入USER和PASS完成登录,发送SYST确认连接状态
- 在控制连接里发送
PASV,得到类似这样的响应:
227 Entering Passive Mode (192,168,11,24,205,245)
把最后两个数字转换成实际端口:205 * 256 + 245 = 52725(这是FTP被动模式的标准端口计算规则)
3. 新开一个命令行窗口,建立数据连接:
telnet 192.168.11.24 52725
- 回到原来的控制连接窗口,发送
NLST /命令
这时候你就能在新开的数据连接窗口里看到目录列表了,控制连接也会返回成功的响应:150 Opening data channel...和226 Successfully transferred...
补充说明
因为你用ftp命令能正常工作,说明FileZilla Server的被动模式端口范围已经在防火墙里开放了,不用再调整服务器设置——只是Telnet手动操作需要你自己处理数据连接这一步,不像客户端那样自动化完成所有流程。
内容的提问来源于stack exchange,提问作者broadband




