天天看點

FTP連接配接時出現“227 Entering Passive Mode” 的解決方法

今天從公網的伺服器連接配接本地内網的FTP server copy檔案時,系統老是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),很是奇怪,于是上網找資料仔細研究了一下,原來FTP有兩種工作模式,PORT模式和PASV模式.

    在主動模式下,FTP用戶端随機開啟一個大于1024的本地端口(比如N号端口)向伺服器的21号端口發起連接配接,然後開放N+1号端口進行監聽,并向伺服器發出PORT N+1指令。

    伺服器接收到指令後,會用其本地的FTP資料端口(通常是20)來連接配接用戶端的N+1号端口進行資料傳輸。

    在被動模式下,FTP庫戶端随機開啟一個大于1024的本地端口(比如N号端口)向伺服器的21号端口發起連接配接,同時會開啟N+1号端口,

    然後向伺服器發送PASV指令通知伺服器自己處于被動模式。伺服器收到該指令後,會開放一個大于1024的端口(比如P号端口)進行監聽,

    然後用PORT P指令通知用戶端,而自己的資料端口是P。用戶端收到指令後,會通過N+1号端口連接配接伺服器的P号端口,

    最後在用戶端N+1号端口和伺服器的P号端口之間進行資料傳輸。

    用下面的圖例會更清晰說明兩者之間的差別:

    *主動模式

    指令連接配接:用戶端 大于1024 端口 → 伺服器 21 端口

    資料連接配接:用戶端 大于1024 端口 ← 伺服器 20 端口

    *被動模式

    資料連接配接:用戶端 大于1024 端口 →  伺服器 大于1024 端口

    總的來說,主動模式是伺服器主動連接配接用戶端的資料端口,被動模式是伺服器被動地等待用戶端連接配接自己的資料端口。

    被動模式通常用在處于防火牆之後的FTP用戶端需要通路外界FTP伺服器的場景,因為在這種場景下,防火牆通常被配置為不允許外界通路防火牆之後主機,而隻允許防火牆之後的計算機發起的連接配接請求。是以在這種場景下不能使用主動模式,而被動模式可以良好的工作。

    由于我的本地FTP伺服器在内網,隻是從外網映射了兩個端口(20,21),即FTP伺服器處于防火牆之後,是以應該使用主動模式。 

ftp> passive

Passive mode off.

ftp> passive (再次運作指令可打開)

Passive mode on. 

繼續閱讀