Невозможно подключить SFTP через прокси к Apache mina 2.17.1.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно подключить SFTP через прокси к Apache mina 2.17.1.

Сообщение Anonymous »

Я пытаюсь установить SFTP-соединение через прокси-хост и порт, но, похоже, мне не удается заставить его работать.

Код: Выделить всё

getConnectionTimeout()
= 60 секунд

Код: Выделить всё

public Response validateWithMinaEngine(long partnerId, SftpCredentials sftpCredentials) {

SshClient client = null;
ClientSession session = null;
SftpClient sftp = null;

try {

ProxyConfig proxyConfig = getProxyConfigMina(true);

client = createMinaClient(sftpCredentials, proxyConfig);

if (proxyConfig != null) {
client.setClientProxyConnector(new HttpProxyConnector(proxyConfig.host, proxyConfig.port, getConnectionTimeout()));
}

client.start();

HostConfigEntry host = new HostConfigEntry(
"",
sftpCredentials.getHost(),
sftpCredentials.getPort(),
sftpCredentials.getUser()
);

session = client.connect(host).verify(getConnectionTimeout(), TimeUnit.MILLISECONDS).getSession();

if (StringUtils.isNotEmpty(sftpCredentials.getPassword())) {
session.addPasswordIdentity(sftpCredentials.getPassword());
}

session.auth().verify(getConnectionTimeout(), TimeUnit.MILLISECONDS);

sftp = SftpClientFactory.instance().createSftpClient(session);

String directory = sftpCredentials.getPathPrefix();
if (!directory.endsWith("/")) {
directory += "/";
}
sftp.stat(directory);

return Response.ok(Collections.singletonMap("valid", true)).build();

} catch (IOException e) {
logger.error("MINA I/O exception", PIILogMaskingUtils.maskExceptionPII(logger, e));
throw new ExternalFileException(ExternalFileException.DATABUS_SFTP_FOLDER_ERROR);

} finally {
if (sftp != null) try { sftp.close(); } catch (Exception ignore) {}
if (session != null) try { session.close();  } catch (Exception ignore) {}
if (client != null) client.stop();
UserContextProvider.setContext(userContext);
}
}

private static SshClient createMinaClient(SftpCredentials c, ProxyConfig proxyConfig) {

SshClient client = SshClient.setUpDefaultClient();
if ("no".equalsIgnoreCase(NO_STRICT_HOST_KEY_CHECK)) {
client.setServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE);
}

CoreModuleProperties.AUTH_TIMEOUT.set(client, Duration.ofMillis(getConnectionTimeout()));
SftpModuleProperties.SFTP_CHANNEL_OPEN_TIMEOUT.set(client, Duration.ofMillis(getConnectionTimeout()));

return client;
}

public class HttpProxyConnector implements ClientProxyConnector {

private final String proxyHost;
private final int proxyPort;
private final int timeout;

public HttpProxyConnector(String proxyHost, int proxyPort, int timeout) {
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
this.timeout = timeout;
}

@Override
public void sendClientProxyMetadata(ClientSession clientSession) throws IOException {
// For HTTP CONNECT proxy, metadata is sent during connect phase
// No additional metadata needs to be sent after SSH session is established
// This method can be empty for HTTP proxies
logger.error("sendClientProxyMetadata called - no action needed for HTTP proxy");
}
}
Я получаю эту ошибку:

Код: Выделить всё

org.apache.sshd.common.SshException: [ssh-connection\]:Failed to get operation result within specified timeout: 60000 msec
at org.apache.sshd.common.future.AbstractSshFuture.lambda$verifyResult$1(AbstractSshFuture.java:114)
at org.apache.sshd.common.future.AbstractSshFuture.formatExceptionMessage(AbstractSshFuture.java:206)
at org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:114)
at org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:56)
at org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:35)
at org.apache.sshd.common.future.VerifiableFuture.verify(VerifiableFuture.java:84)
at org.apache.sshd.common.future.VerifiableFuture.verify(VerifiableFuture.java:69)
at com.spr.rest.http.dataflow.DataFlowRestrictedRestApi.validateWithMinaEngine(DataFlowRestrictedRestApi.java:849)
Есть ли альтернативный способ подключения только через прокси, с использованием прокси-хоста и прокси-порта (имя пользователя прокси-сервера отсутствует)?


Подробнее здесь: https://stackoverflow.com/questions/798 ... ina-2-17-1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»