我想在 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
的实例并使用代理身份验证详细信息配置它?我尝试用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);
}
}
}
}
你能帮我吗?