我正在練習 ftp 但遇到一個問題: ls 指令不適用於 ftp> 。為什麼?我檢查了兩台遠端伺服器,但 ls 都不起作用,並且在執行 ls 時給出了不同的輸出。請參閱下面的 2 個遠端盒。
下面顯示了我今天安裝了 vsftpd 的遠端伺服器。
ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp>
下面是針對不同的遠端計算機,我必須在其中發送一些文件。但是由於 ftp> 上的 ls 不起作用,我將如何將檔案從本機盒子傳輸到該盒子,因為如果沒有 ls 我無法確認檔案是否已傳輸。
ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful
請注意,對於上述機器,一旦我在 ftp> 上運行 ls,提示就沒有回來。
在兩台遠端電腦上,在 ftp> 上執行 ls 時,我得到了不同的輸出
答案1
FTP 是一個古老的協定。它依賴兩個 TCP 連線:控制連接透過其交換命令,以及數據連接用於文件的內容以及命令的輸出,例如ls
.這裡發生的情況是控制連線已建立,但資料連線未建立。
預設情況下(主動模式),從發送方到接收方建立資料連線。對於 的輸出ls
,資料是由伺服器發送的,因此伺服器嘗試開啟與客戶端的連線。當 FTP 發明時,這種方法效果很好,但現在,用戶端通常位於防火牆或 NAT 後面,這些防火牆或 NAT 可能支援也可能不支援主動 FTP。切換到被動模式,客戶端始終發起資料連線。
檢查命令手冊ftp
以了解如何預設切換到被動模式。對於一次性的事情,輸入命令passive
通常可以解決問題。
答案2
完整 “ftp 500 Illegal PORT command”的完整解決方案。點擊以下連結:http://www.ucodice.com/articles/ftp-500-illegal-port-command/。
摘抄
嘗試連接 ftp 伺服器並收到 500 非法連接埠命令。當 ftp 程式未配置為被動模式時,可能會出現此問題。
您可能會收到以下錯誤片段:
COMMAND:> [3/11/2015 1:17:05 PM] PORT 192,168,0,101,196,215
[3/11/2015 1:17:05 PM] 500 Illegal PORT command.
ERROR:> [3/11/2015 1:17:05 PM] Syntax error: command unrecognized.
ERROR:> [3/11/2015 1:17:05 PM] Failed to establish data socket.
若要解決此問題,您可以在 ftp 伺服器的設定檔中定義連接埠或 ftp,並定義 IP 位址或 PASV 伺服器。
檢查設定檔中的以下設定。
pasv_enable=YES
pasv_promiscuous=YES
pasv_max_port=Enter the max port range allowed on your server.
pasv_min_port=Enter the min port range allowed on your server.
pasv_address=Ip Address of your server.
之後重新啟動 ftp 服務並檢查 ftp 連線。