2015-07-21 34 views

回答

1

是的,這是可能的,同時使JSCH連接你需要設置knownHosts文件位置:

例如JSCH連接代碼:

 JSch jsch = new JSch(); 
     jsch.setKnownHosts(propertyReader.getKnownHosts()); 
     session = jsch.getSession(propertyReader.getUsername(), 
       propertyReader.getSftpLocation(), 22); 
     session.setPassword(propertyReader.getPassword()); 
     session.connect(); 
     channel = session.openChannel("sftp"); 
     channel.connect(); 
     ChannelSftp sftp = (ChannelSftp) channel; 

     if (!StringUtils.isBlank(fileToPut)) { 
      sftp.put(fileToPut, propertyReader.getSftpDirectory() + "/" 
        + newFileName); 
     } else { 
      sftp.put(propertyReader.getSftpDirectory() + "/" + newFileName, 
        ChannelSftp.OVERWRITE); 
     } 

這裏propertyReader是類設置所有的位置sftp logistics 已知hosts文件將位於運行java程序的用戶的〜/ .ssh目錄中:

/home/<username>/.ssh/known_hosts 

要遠程SFTP服務器添加到已知主機文件,可以使用從服務器上,你需要使用相同的用戶運行Java程序的常規SFTP命令首先做一個手動SFTP:

sftp [email protected] 

然後提供密碼。或者如果使用密鑰:

sftp -i KEYFILE.pem [email protected] 

如果連接已建立,它會提示您將主機添加到已知主機,並回答yes。

將主機註冊到已知主機文件後,使用java程序進行連接。