2013-12-19 117 views
5

我已經嘗試用庫commons.net創建一個項目,通過ftp發送一些文件。但我創建了與我的服務器的連接,我收到了這個錯誤。commons-net與ssh-2.0協議兼容

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

我跟了這article爲創建我的連接,並與official examples我已經控制的文章。

我的Java代碼在這裏:

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(); 
     } 
    } 

我不明白,我哪裏錯了。

回答

13

FTPS協議不通過SSH運行。你需要的是SFTP。對於這一點,你可以看看Jsch

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

感謝尼克,正常工作與JSch庫 –

+0

感謝尼克。這是非常有用的 – Motilal

3

SFTP(通過SSH連接作爲SSH流運行的文件傳輸)與FTPS(使用SSL/TLS的FTP)不同。