Java 使用 public 密钥身份验证和代理服务器在 SFTP 服务器上获取文件的程序

Java program to get a file on SFTP server using public key authentication and proxy server

在我们的项目中,我们需要使用 public 密钥身份验证从外部 SFTP 服务器获取文件。我在网上搜索过,但没有提及代理服务器路由的任何示例,因为根据公司的政策,这是必需的

我们在 Unix 服务器上使用以下命令来获取文件,但我们想使用 java 程序来实现此功能

sftp -v -oIdentityFile=/home/intusr/.ssh/id_rsa -oProxyCommand="/usr/bin/corkscrew 11.555.66.22 4444 %h %p" user@transmit.com:stage/filedir/

我们将不胜感激您的帮助。迄今为止我找到的最佳资源是
https://kodehelp.com/java-program-for-uploading-file-to-sftp-server/

最常用的Java SSH库是JSch,它同时支持public密钥认证和HTTP代理:

  • How to transfer a file using a proxy with JSch library
  • Can we use JSch for SSH key-based communication?

合并后的代码如下:

JSch jsch = new JSch();
jsch.addIdentity("/path/to/private/key");
Session session = jsch.getSession("user", "host");
ProxyHTTP  proxy = new ProxyHTTP("proxy", proxyport)
proxy.setUserPasswd("proxyusername", "proxypassword");
session.setProxy(proxy);
session.connect();

要下载文件,请参阅:
How to retrieve a file from a server via SFTP?

你也必须