2012-06-28 237 views
1

仍未答覆。任何和所有的幫助表示讚賞!Java FTPS問題

我正在使用Apache Commons-Net3.1並試圖使FTPS正常工作。當我嘗試連接時,我得到在控制檯以下錯誤:

---編輯:CODE和更新的錯誤---

java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at org.apache.commons.net.SocketClient.connect(SocketClient.java:171) 
at org.apache.commons.net.SocketClient.connect(SocketClient.java:192) 
at org.apache.commons.net.SocketClient.connect(SocketClient.java:285) 

我相信我只是不建立起來對。這是我的代碼。任何正確的方向點將不勝感激。 (我試圖通過端口990連接)。行「client.connect(ftpHost);」處的代碼錯誤

import org.apache.commons.net.ftp.FTPSClient; 
import java.io.IOException; 
import java.io.FileOutputStream; 

public class MyFTP { 
public void downloadFTP(){ 

     FTPSClient client = new FTPSClient(false); 

     FileOutputStream fos = null; 
     client.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager()); 

     try { 
      client.connect(ftpHost); 
      client.enterLocalPassiveMode(); 
      client.login(ftpUser, ftpPassword); 


      String filename = "liveGUIfile.txt"; 
      fos = new FileOutputStream(filename); 


      client.retrieveFile("/root/Desktop/" + filename, fos); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (fos != null) { 
        fos.close(); 
       } 
       client.disconnect(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 
} 
+0

看起來像你有一個安全問題。什麼主機試圖達到?順便說一句,這是不同的SFTP FTP – jddsantaella

+0

@jddsantaella,即時嘗試達到另一臺計算機,我有vsftpd安裝(爲什麼我需要這樣做,但我這樣做的長故事)。我能夠在我編寫的c#程序中成功運行。 – kaptaincooke

+0

請注意,雖然vsftpd確實似乎支持SSL,但它可能並未默認啓用,並且肯定需要配置。 –

回答

0
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

這說明了一切。明文連接。您正在連接到FTP服務器,而不是FTPS服務器。它就在錯誤信息中。

+1

嗯,它是一個FTPS服務器,因爲我在c#程序中使用了FTPS,並且必須信任所有證書。我用新代碼和新錯誤更新了我的問題。 – kaptaincooke

+0

服務器是否在端口21或990上偵聽? –

3

FTPS可能是顯式或隱式的,使用顯式:

FTPSClient client = new FTPSClient(false); 

但明確的一個通常使用21端口,如FTP呢,和隱含一個使用990端口。所以嘗試連接到21端口或使用new FTPSClient(true)