1. 程式人生 > >ftp連線伺服器出現的問題(主動模式與被動模式)

ftp連線伺服器出現的問題(主動模式與被動模式)

客戶端FTPClient連線時報錯:

>2018-04-18 14:43:47,981 [main] ERROR com.test.ftpclient.FTPClientUtil - 無法連線至指定FTP伺服器
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[na:1.8.0_77]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_77]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_77]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_77]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_77]
at org.apache.commons.net.SocketClient.connect(SocketClient.java:182) ~[commons-net-3.3.jar:3.3]
at org.apache.commons.net.SocketClient.connect(SocketClient.java:203) ~[commons-net-3.3.jar:3.3]
at com.test.ftpclient.FTPClientUtil.<init>(FTPClientUtil.java:43) ~[ftp-test.jar:na]
at com.test.ftpclient.FtpMain.main(FtpMain.java:29) [ftp-test.jar:na]

服務端ftp日誌顯示:遠端主機強迫關閉了一個現有的連線。

經過查詢資料發現:ftp連線時主動模式與被動模式的區別

結論:passive模式

        服務端開啟>1024埠等待客戶端連線, 進行資料傳輸


     active 模式:

    服務端通過20埠(預設20,可以設定為其他埠)主動連線客戶端>1024埠, 進行資料傳輸


迴歸前面的問題,客戶端使用被動模式連線ftp,而服務端部署在阿里雲上,埠只開了幾個(21、80、3389等),所以此時客戶端不能連線其他>1024的埠進行資料傳輸,所以在建立連線時報錯。而此時將連線模式改為主動模式就可以成功上傳檔案(此時服務端20埠沒有配置使用,猜測可能是服務端主動連線客戶端,不存在aliyun入方向埠啟用問題)

本次使用的Apache FtpServer,具體配置可修改配置ftpd-typical.xml

<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
   http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd
   "
id="myServer"        /*設定server的標誌符,必須*/
max-logins="5"       /*設定同時登陸的最大人數*/
        anon-enabled="false" /*設定匿名登陸為不允許*/
        max-anon-logins="0"  /*設定匿名登陸使用者為0個*/
        max-login-failures="3"  /*設定3次失敗登陸後,關閉此連結*/
        login-failure-delay="30000"/*設定失敗登陸後下一次登陸所需的時間間隔,防止暴力破解,單位是微秒*/
>
<listeners>
           <nio-listener name="default" port="2121"><!--設定預設的連結埠為2121,必須-->
<ssl>
                    <keystore file="./res/ftpserver.jks" password="password" /><!--設定金鑰儲存路徑和金鑰儲存密碼,必須-->
                </ssl>
    <data-connection idle-timeout="60"><!--設定多少時間後關閉一個閒置的連結,單位是秒-->
<active local-port="1886"/><!--設定主動連結配置,埠號“1886”預設埠20

-->
<!--設定被動連結配置,埠設定為“1886”,也可以設定IP段“3001-3010”,擴充套件地址為“137.222.18.114”,當需要訪問的伺服器返回外網地址時使用-->
<passive ports="1886" address="0.0.0.0" external-address="137.222.18.114"/>
    </data-connection>
</nio-listener>
</listeners>
<!--設定使用者登陸資訊,“./res/conf/users.properties”為檔案路徑,“encrypt-passwords=‘clear’”設定密碼加密方式,預設是“MD5”,設定成“clear”表示不加密,直接輸入-->
<file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>

</server>

設定被動模式下伺服器隨機開啟埠的範圍,然後將IP段加入aliyun入站規則中,就可以正常使用被動模式連線ftp了。

而服務端報錯是在連線ftp結束時未正常0關閉連線,客戶端資料傳輸結束,服務端強制釋放此連線。

相關推薦

ftp連線伺服器出現的問題主動模式被動模式

客戶端FTPClient連線時報錯:>2018-04-18 14:43:47,981 [main] ERROR com.test.ftpclient.FTPClientUtil - 無法連線至指定FTP伺服器java.net.ConnectException: Conn

FTP連線--主動模式被動模式

FTP主動連線模式與被動連線模式 本文參考了http://wenku.baidu.com/view/cf571f45b307e87101f69672.html 這篇文章 一、基礎 FTP是僅基於TCP的服務,不支援UDP。 FTP使用2個埠,一個命令埠(控制埠)(CM

FTP主動模式被動模式

  基礎知識:   FTP只通過TCP連線,沒有用於FTP的UDP元件.FTP不同於其他服務的是它使用了兩個埠, 一個數據埠和一個命令埠(或稱為控制埠)。通常21埠是命令埠,20埠是資料埠。當混入主動/被動模式的概念時,資料埠就有可能不是20了。   主動模式FT

FTP傳輸中的主動模式被動模式

參考部落格:https://blog.csdn.net/zhangyuan12805/article/details/71425385 文章目錄 Active Mode Passive Mode 總結一下 Active Mode

關於FTP主動模式被動模式的一點理解

又一次面試的時候,面試像這樣問我:請簡述FTP的主動模式與被動模式的區別?FTP這玩意不是天天都要用到的麼,看起來這麼簡單的問題我居然回答不上來,好尷尬!經過幾天的思考與理解,終於有點眉目,拙見讓諸位見笑了。 主動模式中FTP的客戶端傳送 PORT 命令到FTP伺服器。被動

linux ftpsftp,ftp主動模式被動模式

sftp是Secure File Transfer Protocol的縮寫,安全檔案傳送協議。可以為傳輸檔案提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部份,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在

FTP主動模式被動模式互相切換

今天和同事討論ftp連線中,能不能先協商成主動,進行檔案操作後,再換成被動模式進行檔案操作。有的同事提出不可以,想切換模式的話控制連線也會斷掉。但是我認為是可以切換的,為了證明我的觀點,我找環境試驗了一下,事實證明是可以切換的,控制連線保持不變,資料連線會重新協商。 不過我在測試的時候發現,命令列下面,

zabbix主動模式被動模式、添加監控主機、添加自定義模板

Linux學習筆記zabbix主動模式與被動模式 添加監控主機 添加自定義模板 1.將原來的模板下載下來,刪除自己不需要的,導入時要更改名字。 2.創建一個鏈接的模板,取消鏈接後,在刪除模板中不想要的選項。 處理圖形中的亂碼 zabbix主動模式與被動模式、添加監控主機、添加自定義模板

微信支付之獲得openid主動獲得和被動獲得

1、主動獲得:通過網頁授權獲得openid 在攔截器中獲取存放到session中 2、被動獲得:通過使用者的動作微信會向程式傳送xml,通過解析xml獲得個人資訊 流程如下: 點選公眾號的按鈕—->微信向程式傳送xml—解析出使用者資訊 一、主動

FTP主動被動模式,及linux服務端的配置

阻塞 pre 兩種模式 文件中 linux服務 文件傳輸協議 服務端 linu 固定 FTP作為一種簡單的明文文件傳輸協議,其工作過程有兩個工作進程--(命令進程(默認21端口)與數據傳輸進程); 而數據傳輸進程又分為主動與被動兩種模式: 主動FTP: 命令連接:客戶端

FTP主動模式被動模式在VRP上實現實驗、報文和理論解析

理解 客戶 warning 簡述 查看 inf 要求 sep mac 嗯~點關註不迷路 1.簡述主動模式的FTP建立連接的主要步驟 圖1-19 FTP主動模式示意圖基本原理FTP(文件傳輸協議)的特殊性: 大多數的TCP服務是使用單個的連接,一般是客戶向服務器的一個周知端口

FTP主動模式被動模式以及java的連線FTP模式設定

FTP主動模式和被動模式以及java的連線FTP模式設定 (1)PORT(主動模式) PORT中文稱為主動模式,工作原理:FTP客戶端連線到FTP伺服器的21埠,傳送使用者名稱和密碼登入,登入成功後要列表列表或者讀取資料時,客戶端隨機開放一個埠(1024以上) ,傳送PORT命令到FTP伺服

【轉】FTP主動模式被動模式的比較

edit 兩個 int cti 了解 選擇 監聽端口 通訊 mod 總是記不住FTP主動和被動模式的區別。放在這裏,以備日後查閱。 FTP是僅基於TCP的服務,不支持UDP。與眾不同的是FTP使用2個端口,一個數據端口和一個命令端口(也可叫做控制端口)。通常來說這兩個端

主動模式被動模式zabbix的web管理界面使用

linux監控平臺 zabbix linux 操作系統 筆記內容:19.7 主動模式和被動模式19.8 添加監控主機19.9 添加自定義模板19.10 處理圖形中的亂碼19.11 自動發現筆記日期:19.7 主動模式和被動模式所謂主動就是客戶端主動上報數據,被動則是客戶端被動去提供數據。主動模

FTP主動模式被動模式,你應該用那種?

FTP 原理 主動模式 被動模式 FTP文件傳輸分為兩種模式,主動(PORT)模式和被動(Passive)模式,用戶應該用哪種? - 簡單粗暴,直接上答案 1)如果不是必須需要,不要使用FTP服務,主動/被動模式,命令/數據端口,初學者很容易一下子就被搞蒙。 2)如果一定要使用FTP服務,

ftp主動模式被動模式的配置和區別

ive line ip 地址 也會 邊界 操作模式 技術分享 上進 text   原文鏈接: https://blog.csdn.net/zhangyuan12805/article/details/71425385    ftp模式分為主動模式(active mode)和

19.7-19.11 主動被動模式,添加主機,添加模板,處理圖形亂碼

zabbix19.7 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。

FTP主動模式被動模式的相關知識

nag ado 圖片 主動模式和被動模式 客戶端和服務器 ftp 明顯 port 運行 FTP的主動模式和被動模式的相關知識。 在使用FTP時,如果客戶端機器和FTP服務器雙方之間的所有端口都是開放的,那連接不存在問題。如果客戶端與服務器之間有防火墻,如果沒配置好防火策略和

Linux安裝Zabbix Agent主動模式被動模式

roc ron star sts mark 周期性 建立 ESS 會有 環境: 系統:centos 7.4平臺:zabbix 3.2安裝包:zabbix-3.2.11.tar 編譯安裝路徑 :/usr/local/zabbix_agentd/主動模式、被動模式介紹 如果需

python-連線MySQLmysql.connectorMySQLdb區別

  1.安裝mysql-connector 命令    pip install mysql-connector  import mysql.connector cnx = mysql.connector.connect(user='roo