2013-12-19 21 views
5

Ich habe versucht, ein Projekt mit der Bibliothek commons.net für das Senden über FTP einige Dateien zu erstellen. Aber ich habe eine Verbindung mit meinem Server erstellt. Ich habe diesen Fehler erhalten.commons-net ist kompatibel mit ssh-2.0-Protokoll

org.apache.commons.net.MalformedServerReplyException: Could not parse response code. 
Server Reply: SSH-2.0-OpenSSH_5.3 

Ich habe diese article gefolgt für meine Verbindung erstellen, und mit official examples ich habe Artikel gesteuert.

mein Java-Code hier:

private void connect(String host, String user, String pwd) { 
     try{ 
     ftp = new FTPSClient(false); 
     //ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); 
     int reply; 

     ftp.connect(host,22);//error is here 
     reply = ftp.getReplyCode(); 
     if (!FTPReply.isPositiveCompletion(reply)) { 
      ftp.disconnect(); 
      throw new Exception("Exception in connecting to FTP Server"); 
     } 
     ftp.login(user, pwd); 
     ftp.setFileType(FTP.BINARY_FILE_TYPE); 
     ftp.enterLocalPassiveMode(); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 

Ich verstehe nicht, wo ich schief gelaufen ist.

Antwort

13

Das Protokoll FTPS läuft nicht über SSH. Was Sie brauchen, ist SFTP. Dazu erhalten Sie bei Jsch Bibliothek

JSch jsch = new JSch(); 
    Session session = jsch.getSession(user, host, port); 
    session.setConfig("PreferredAuthentications", "password"); 
    session.setPassword(pass); 
    session.connect(FTP_TIMEOUT); 
    Channel channel = session.openChannel("sftp"); 
    ChannelSftp sftp = (ChannelSftp) channel; 
    sftp.connect(FTP_TIMEOUT); 
+0

dank nick aussehen könnte arbeitet, mit JSch Bibliothek –

+0

Dank Nick gut. Es ist sehr nützlich – Motilal

3

SFTP (Dateiübertragung läuft als SSH-Stream über eine SSH-Verbindung) ist nicht dasselbe wie FTPS (FTP mit SSL/TLS).