2015-07-21 49 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程序进行连接。