【问题标题】:Java program to get a file on SFTP server using public key authentication and proxy server使用公钥认证和代理服务器在 SFTP 服务器上获取文件的 Java 程序
【发布时间】:2020-03-30 21:21:48
【问题描述】:

在我们的项目中,我们需要使用公钥认证从外部 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 proxy sftp public-key-encryption


    【解决方案1】:

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

    结合起来,代码如下:

    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?

    您也必须verify server host key

    【讨论】:

    • 谢谢马丁。我们没有代理服务器的用户名/密码。这是强制性的吗?
    • 不,不是,跳过setUserPasswd 电话。
    • 嗨,马丁,我在编译以下语句时遇到问题。它说“找不到符号”
    • 通过添加“import com.jcraft.jsch.ProxyHTTP;”解决了该错误
    • 代码现在可以运行了,感谢 Martin 的帮助!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多