如何配置 Apache-Mina sftp 客户端以使用代理?

问题描述 投票:0回答:2

我想在 Java 应用程序中使用 Apache MINA 作为

sftp
客户端。该应用程序将通过 HTTPS 代理与远程服务器建立出站连接。我需要设置身份验证详细信息以连接到某个地方的代理。

我想获取

org.apache.sshd.sftp.client.SftpClient
的实例,它通过代理在
ssh
连接上运行。

我有这些进口产品:

import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.session.ClientProxyConnector;
import org.apache.sshd.client.session.ClientSession;
import org.apache.sshd.sftp.client.SftpClient;
import org.apache.sshd.sftp.client.SftpClientFactory;

这是我迄今为止编写的代码:

    // proxy
    ClientProxyConnector proxy = ????;

    // ssh
    SshClient sshClient = SshClient.setUpDefaultClient();
    sshClient.setClientProxyConnector( proxy );
    sshClient.start();

    ClientSession sshSession = sshClient.connect( "example.org" ).getSession();

    // sftp
    SftpClientFactory factory = SftpClientFactory.instance();
    SftpClient client = factory.createSftpClient(sshSession);

问题:

  • 我需要一个
    ClientProxyConnector
    的实例来完成我想要做的事情吗?
  • 如何获取
    ClientProxyConnector
    的实例并使用代理身份验证详细信息配置它?
sftp apache-mina
2个回答
2
投票

要访问代理,您应该使用

ClientSession
创建
HostConfigEntry
,这允许 指定代理

HostConfigEntry host = new HostConfigEntry("", "example.org", 22, "username", 
    proxyUser + "@" + proxyHost + ":" + proxyPort);
ClientSession sshSession = sshClient.connect(host).getSession();

ClientProxyConnector
的目的是其他


0
投票

我尝试用java编写这一行代码。但我有问题...

这是我的代码:

    try (SshClient client = SshClient.setUpDefaultClient()) {
        client.start();

        HostConfigEntry hostConfig = new HostConfigEntry("", host, port, username,
                "" + "proxy.com:" + 3128);

        try (ClientSession session = client.connect(hostConfig).verify().getSession()) {
            session.addPasswordIdentity(password);
            session.auth().verify();

            try (SftpClient sftpClient = SftpClientFactory.instance().createSftpClient(session)) {
                try (OutputStream outputStream = sftpClient.write(remoteDirectory + "/" + fileName)) {
                    outputStream.write(bytes);
                }
            }
        }
    }

你能帮我吗?

© www.soinside.com 2019 - 2024. All rights reserved.