之前能通过命令sftp username@ip连接对端服务器,java代码为
com.jcraft.jsch.Session session = null; JSch jsch = new JSch(); session = jsch.getSession(userName, ip, Integer.parseInt(port)); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword(password); session.connect(); channel = session.openChannel("sftp"); channel.connect();后面由于客户安全考虑使用了浮动ip,先前的命令无法连通,需用命令sftp -oBindAddress=ip_浮动 syncoss@ip。
发现使用session.setConfig("BindAddress", ip_浮动);//无效
继续查资料,试着使用代理
ProxySOCKS4 proxysocket = new ProxySOCKS4(ip_浮动,22); session.setProxy(proxysocket);依旧不行。。。。
求各位大神。指教
20170302后面的解决方法:
session.setConfig("StrictHostKeyChecking", "no"); // 增加浮动ip的绑定 if (!"".equals(bindAddress) && null != bindAddress) { SocketFactoryIns socketFactory = new SocketFactoryIns(); socketFactory.setLocalAddressIp(bindAddress); session.setSocketFactory(socketFactory); } session.setPassword(password); ....