1. 程式人生 > 其它 >FTP主動模式上傳檔案時返回"ftp: accept: Resource temporarily unavailable"

FTP主動模式上傳檔案時返回"ftp: accept: Resource temporarily unavailable"

FTP主動模式上傳檔案時返回

Passive mode off
ftp: accept: Resource temporarily unavailable

這個問題要從ftp的2種模式說起

PORT & PASV

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。

PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,客戶端在命令鏈路上用PORT命令告訴伺服器:“我打開了XXXX埠,你過來連線我”。於是伺服器從20埠向客戶端的XXXX埠傳送連線請求,建立一條資料鏈路來傳送資料。

PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,伺服器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX埠,你過來連線我”。於是客戶端向伺服器的XXXX埠傳送連線請求,建立一條資料鏈路來傳送資料。

解決辦法

1,繼續使用PORT模式,那麼客戶端就需要放開FTP伺服器的IP(因為客戶端到底開放多少埠去跟伺服器連線也不知道.當然如果客戶端機器沒開啟防火牆就不會有這個問題.)

firewall-cmd --add-rich-rule="rule family="ipv4" source address="1.2.3.4" accept"    
firewall-cmd --reload
firewall-cmd --list-all

2,vsftpd,需新增:pasv_address=公網IP

listen=YES        #指定被動模式時的公網IP地址時只能監聽在IPv4地址    
listen_ipv6=NO    #與listen衝突,預設監聽IPv6地址,當監聽在IPv4時IPv6必須禁用,否則vsftpd.service將無法啟動    
  
pasv_enable=YES    
pasv_min_port=12000     #ftp服務端也要放開對應範圍埠
pasv_max_port=12100  
pasv_address=1.2.3.4      #指定被動模式時的公網IP地址