【发布时间】:2014-10-25 06:40:49
【问题描述】:
我在通过 JSch 创建与远程 SFTP 服务器的会话时遇到问题:
我通过shell连接sftp服务器的命令是:
sftp -o BindAddress=SOME_IP_ADDRRESS myUserName@HOST_IP_ADDR
它工作正常,但是当我尝试使用 Java (JSch) 时,我得到一个超时异常。 Java代码是
/* KEY_FILE_NAME = is a file with rsa public key */
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(KEY_FILE_NAME).getFile());
JSch jsch = new JSch();
jsch.addIdentity(file.getAbsolutePath());
Properties hash = new Properties();
hash.put("StrictHostKeyChecking", "no");
logger.debug("SSh Server Host name >>" + SSH_SERVER_HOST_NAME + " || User Name >>" + SSH_SERVER_USER_NAME);
session = jsch.getSession(SSH_SERVER_USER_NAME, SSH_SERVER_HOST_NAME);
UserInfo ui = new MyUserInfo();
session.setUserInfo(ui);
session.setConfig(hash);
session.setPort(22);
session.setTimeout(45000);
session.connect();
我得到的例外是:
com.jcraft.jsch.JSchException:超时:未建立套接字
我猜它即将到来,因为我没有设置 BindAddress 和 -o 选项,而我在使用 shell 命令时正在使用该选项。如果是这种情况,那么如何在 JSch 中设置 -o BindAddress 参数?或者我做错了什么,请提出建议。
【问题讨论】: