在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java中使用FtpClient連接服務(wù)器getReplyCode()返回530

java中使用FtpClient連接服務(wù)器getReplyCode()返回530,但是使用SSH工具連接是正常的。

問題描述

java中使用FtpClient連接服務(wù)器getReplyCode()返回530,但是使用SSH工具連接是正常的。

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

手中有一個(gè)FTP服務(wù)器IP和賬號密碼,一模一樣的賬號密碼使用SSH工具(端口:22)可以登陸,但是在java中調(diào)用apache.commons.net.ftp.FTPClient的FtpClient方法,端口用的21,通過源碼中看到的信息,F(xiàn)tpClient自帶的一個(gè)login方法中得到的replyCode是530.使用isPositiveCompletion()也返回了false。嘗試連接別的FTP服務(wù)器,得到正常的結(jié)果,以下是telnet兩個(gè)服務(wù)器返回的信息。(感覺代碼沒問題,畢竟是apache的包方法。)

FTPClient不能登陸的服務(wù)器如下圖
圖片描述

FTPClient測試正常登陸的服務(wù)器如下圖
圖片描述

以下是login方法不能登陸的服務(wù)器的配置(user_list,ftpuser,vaftpd.conf)
圖片描述
圖片描述
圖片描述

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

    private static String hostname = "**.***.***.**";
    private static int port = 21;
    private static String username = "root";
    private static String pass = "rootroot";
    
    FTPClient ftpClient = new FTPClient();
    logger.debug("FTP-DETAILS-開始連接");
    ftpClient.connect(hostname, port);
    int reply = ftpClient.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
        ftpClient.disconnect();
    }
    // 登錄
    boolean b = ftpClient.login("root", "rootroot");
    int test = ftpClient.getReplyCode(); //輸出->530

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

    為什么不能正常登陸?replyCode=530實(shí)際的含義是未登陸吧?也有說是賬號名密碼錯(cuò)誤的說法,但是登陸使用的賬號名密碼可以保證都是不含空格的。

回答
編輯回答
入她眼

java 不擅長,強(qiáng)答一波

Ftp主動(dòng)模式和被動(dòng)模式
prot 和pasv
主動(dòng)模式和被動(dòng)模式的不同簡單概述為: 主動(dòng)模式傳送數(shù)據(jù)時(shí)是“服務(wù)器”連接到“客戶端”的端口;被動(dòng)模式傳送數(shù)據(jù)是“客戶端”連接到“服務(wù)器”的端口。
所以你先要確定你的FTP,采用何種模式,然后去看FTPClient 文檔,它是怎么支持這兩種模式的

還有,看你的not allowed 里面也包含了 root,為什么代碼里,你還在用root登錄?

2018年2月5日 17:17
編輯回答
耍太極

你使用 ssh 可以登錄, 說明服務(wù)器開啟了ssh, 但不能說明目標(biāo)服務(wù)器有 ftp 服務(wù)啊, 登不上很正常吧. 你應(yīng)該用支持 ssh 協(xié)議的 client 而不是 FtpClient.

2018年5月13日 15:16