1. 程式人生 > 其它 >FTP連結的主被動模式:500 Illegal PORT command的問題

FTP連結的主被動模式:500 Illegal PORT command的問題

在windows的dos視窗用FTP命令去連時,可以登入,但使用ls等命令時,出現:
500 Illegal PORT command.
425 Use PORT or PASV first.
根據提示是被動模式的問題。

FTP主/被動模式的原理

FTP是File Transfer Protocol(檔案傳輸協議)的縮寫,用來在兩臺計算機之間互相傳送檔案。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因為FTP協議要用到兩個TCP連線,一個是命令鏈路,用來在FTP客戶端與伺服器之間傳遞命令;另一個是資料鏈路,用來上傳或下載資料。
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,客戶端在命令鏈路上用PORT命令告訴伺服器:“我打開了XXXX埠,你過來連線我”。於是伺服器從20埠向客戶端的XXXX埠傳送連線請求,建立一條資料鏈路來傳送資料。
PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,伺服器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX埠,你過來連線我”。於是客戶端向伺服器的XXXX埠傳送連線請求,建立一條資料鏈路來傳送資料。

概括:

主動模式:伺服器向客戶端敲門,然後客戶端開門
被動模式:客戶端向伺服器敲門,然後伺服器開門
所以,如果你是如果通過代理上網的話,就不能用主動模式,因為伺服器敲的是上網代理伺服器的門,而不是敲客戶端的門

而且有時候,客戶端也不是輕易就開門的,因為有防火牆阻擋,除非客戶端開放大於1024的高階埠

要用主動模式來下載,請您把下載工具的被動模式(PASV)都不要打勾,用主動模式來下載就OK了,如果在出錯,那就被動主動相互轉換一下


如何設定vsftpd的主動與被動模式:

Vsftpd的配置檔案/etc/vsftpd/vsftpd.conf?
主動模式設定
Port_enable=YES開啟主動模式(default:YES)
Connect_from_port_20=YES當主動模式開啟的時候?是否啟用預設的20埠監聽
Ftp_date_port=%portnumber%上一選項使用NO引數是?指定資料傳輸埠?
被動模式
PASV_enable=YES開啟被動模式
PASV_min_port=%number%被動模式最低埠
PASV_max_port=%number%被動模式最高階口


大部分FTP客戶端預設使用PASV方式,PASV模式的意式是被動模式。在大部分FTP客戶端的設定裡,常見到的字眼都是“PASV”或“被動模式”。
IE: 工具 -> Internet選項 -> 高階 -> “使用被動FTP”(需要IE6.0以上才支援)。
CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或 File -> Site Manager,在左邊選中站點 -> Edit -> “Use PASV mode”
FlashGet: 工具 -> 選項 -> 代理伺服器 -> 直接連線 -> 編輯 -> “PASV模式”
FlashFXP: 選項 -> 引數選擇 -> 代理/防火牆/標識 -> “使用被動模式”
或 站點管理 -> 對應站點 -> 選項 -> “使用被動模式”
或 快速連線 -> 切換 -> “使用被動模式”
LeapFTP: Option ->Preferences -> General->Proxy->Use Pasv Mode
原文連結:

https://blog.csdn.net/enweitech/article/details/51330664

部落格園:https://home.cnblogs.com/u/hhddd-1024
GitHub:https://github.com/jia-1024
Copyright @2021黃河大道東
【轉載文章務必保留出處和署名,謝謝!】