尽管在JSch中设置了STRICT_HOST_CHECKING,但仍获取UnknownHostKey异常

时间:2016-02-15 09:54:30

标签: java proxy sftp jsch

在使用java代码连接会话时在代码下执行时获取问题。尝试所有更改也尝试使用SFTPFileSystemConfigurationBuilder,但从那个场景我无法设置代理服务器用户名和密码。

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.ProxySOCKS5;

JSch js=new JSch();
   ProxySOCKS5 ph=new ProxySOCKS5(proxyServer,proxyPort);
   ph.setUserPasswd(proxyUN, proxyPass);
   com.jcraft.jsch.Session sessi=js.getSession(sftpUN, SFTPURL,SFTPPort);
   sessi.setPassword(sftpPassword);
   sessi.setProxy(ph);
   sessi.setConfig("STRICT_HOST_CHECKING", "no");

  //Getting Error
   sessi.connect();
   /*
    com.jcraft.jsch.JSchException: UnknownHostKey: proxyServer. RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX......
      at com.jcraft.jsch.Session.checkHost(Session.java:797)
      at com.jcraft.jsch.Session.connect(Session.java:342)
      at com.jcraft.jsch.Session.connect(Session.java:183)
     */ 

    Channel ch=sessi.openChannel("sftp");
   ch.connect();
   ChannelSftp sftpCh= (ChannelSftp) ch;
   sftpCh.cd(remoteDirectory);
   File fileToTransfer= new File(localDirectory);
   sftpCh.put(new FileInputStream(fileToTransfer),"1.txt");
   sftpCh.disconnect();
   ch.disconnect();
   sessi.disconnect()

1 个答案:

答案 0 :(得分:0)

您的问题与代理无关。

没有STRICT_HOST_CHECKING指令。有StrictHostKeyChecking

虽然请注意您使用此指令丢失了任何安全性。确保你了解自己在做什么。