sftp读取对方服务器文件,但是我们的服务器在核心域,对方是互联网域,所以需要通过代理连接。
之前也是搜了大量的案例,
session.setProxy(new ProxyHTTP(proxyIp, proxyPort));
代码设置代理一直报未知原因。所以试了很多方式终于解决,方法如下:
采用的是nginx代理
nginx配置如下
stream {
upstream sftp {
hash $remote_addr consistent;
server 对方服务器ip:对方服务器端口 max_fails=3 fail_timeout=30s;
}
server{
listen 10082;
proxy_connect_timeout 5s;
proxy_timeout 5s;
proxy_pass sftp;
}
}
server 是对方服务器ip端口,10082是监听代理端口。注:stream 与http同级
JSch jsch = new JSch();
if (privateKey != null) {
jsch.addIdentity(privateKey);// 设置私钥
}
session = jsch.getSession(对方服务器用户名, 代理ip, 代理端口