2013-10-22 29 views
8

我在Ubuntu 12.04 LTS中設置了FTP服務器。200 PORT命令成功。考慮使用PASV。 425無法建立連接

現在,當我嘗試通過命令行ftp.exe從Windows 7連接到FTP服務器時,我成功連接,但無法獲取目錄列表。我得到錯誤

200 PORT command successful. Consider using PASV. 
425 Failed to establish connection. 

回答

4

嘗試使用ls之前,使用passive命令。

從FTP客戶端,檢查FTP服務器是否支持被動模式,登錄後輸入quote PASV

以下是連接示例與上下車

vsftpdpasv_enable=NO被動模式下的vsftpd服務器:

# ftp localhost 
Connected to localhost.localdomain. 
220 (vsFTPd 2.3.5) 
Name (localhost:john): anonymous 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> quote PASV 
550 Permission denied. 
ftp> 

vsftpdpasv_enable=YES

# ftp localhost 
Connected to localhost.localdomain. 
220 (vsFTPd 2.3.5) 
Name (localhost:john): anonymous 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> quote PASV 
227 Entering Passive Mode (127,0,0,1,173,104). 
ftp> 
+0

'報價PASV'不會幫助。它只將服務器切換到被動模式。但不是客戶。請參閱[如何在Windows命令提示符下使用被動FTP模式?](http://stackoverflow.com/q/18643542/850848) –

+0

@MartinPrikryl我不確定您是否閱讀我的答案。另外,似乎人們一直在編輯我的答案。但是,您對Windows命令提示符是正確的。 – Shannon

+0

是的,我讀了你的答案。這個問題是關於Windows'ftp.exe'(*我嘗試通過命令行***從** Window 7連接到FTP服務器)。在Windows ftp.exe中,沒有'passive'命令,甚至不支持被動模式。所以你的回答與這個問題無關。 –

8

您正在使用FTP在一個活動模式。

由於防火牆和NAT的原因,在活動模式下設置FTP可能非常麻煩。

很可能是因爲您的本地防火牆或NAT,服務器無法連接回您的客戶端以建立數據傳輸連接。

或者您的客戶端不知道其外部IP地址,而是向服務器提供內部地址(在PORT命令中),該服務器明顯無法使用。但情況並非如此,因爲默認情況下vsftpd拒絕與FTP控制連接的源地址(port_promiscuous指令)不同的數據傳輸地址。

請參閱我的文章Network Configuration for Active Mode


如果可能,應該使用被動模式,因爲它通常不需要在客戶端進行額外的設置。這也是服務器通過「考慮使用PASV」提出的建議。 PASV是用於進入被動模式的FTP命令。

不幸的是Windows FTP命令行客戶端(ftp.exe)完全不支持被動模式。現在它變得毫無用處。

改爲使用任何其他第三方Windows FTP命令行客戶端。大多數其他支持被動模式。

例如WinSCP FTP client默認爲被動模式,並且有指導可用於轉換Windows FTP script to WinSCP script

(我的WinSCP的作者)

2

其實你的窗口防火牆阻止連接,所以你需要從管理員輸入這些命令到CMD.EXE。

1)的netsh advfirewall防火牆添加規則名稱= 「FTP」 DIR =在行動=允許程序=%SYSTEMROOT%\ System32下\ Ftp.exe的啓用=是協議= TCP

2)的netsh advfirewall防火牆添加規則名稱= 「FTP」 DIR =行動=允許程序=%SYSTEMROOT%\ SYSTEM32 \ Ftp.exe的啓用= YES協議UDP =

如果萬一出現問題,那麼你可以通過這個回覆:

1)netsh advfirewall防火牆刪除規則名稱=「FTP」程序=%SystemRoot%\ System32 \ ftp.exe

+0

爲我工作謝謝 –