Ftp

為什麼我在執行命令後會被踢出 FTP 會話?

  • April 17, 2019

為什麼我在執行命令後會被踢出 FTP 會話?似乎一旦我成功登錄到伺服器,在執行諸如“ls”之類的命令後就會得到以下資訊(我已將錯誤部分包含在“

$$ ERROR $$“標籤):

allen92@allen92-VirtualBox:~/Videos$ ftp -n ftp.FreeBSD.org
Connected to ftp.FreeBSD.org.
220 beastie.tdk.net FTP server (Version 6.00LS) ready.
ftp> user
(username) anonymous
331 Guest login ok, send your email address as password.
Password: 
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
[ERROR]
421 Service not available, remote server has closed connection
[ERROR]
ftp> 

這似乎發生在任何遠端 FTP 伺服器上。當我登錄到本地機器並執行 FTP 命令時,一切正常。如果實際上“421”錯誤是一般錯誤,有沒有辦法找出問題的根源?對此的任何線索將不勝感激。在這個特定問題上,我找不到任何支持。任何有類似問題的人請分享您的想法。

注意:我安裝了VSFTPD

您和顯示該症狀的伺服器之間很可能存在 NAT 防火牆。(NAT 防火牆將整個網路隱藏在單個 IP 號碼後面)。

問題是 ftp 想要在一個新的、單獨的TCP/IP 連接中發送命令產生的數據*,並且*無法通過防火牆,因為它需要從伺服器發送給您,而您隱藏在防火牆後面不知道數據是為您的機器準備的。在設計 FTP 協議時,許多現代設備,如 NAT 路由器(當設備數量多於可用 IP 地址時變得必要)尚未發明。

使用pasv命令(在您的客戶端中可能稱為不同的名稱)更改為被動連接,其中數據連接從您到伺服器。

有關更詳細的說明,請參閱http://slacksite.com/other/ftp.html 。

引用自:https://unix.stackexchange.com/questions/90487