Как подключиться к удаленному SFTP-серверу из OpenShift .NET Core POD, используя SSH.NET - PullRequest
0 голосов
/ 19 марта 2019

У меня есть служба .NET Core 2.2, работающая в OpenShift. Моя служба использует SSH.NET для подключения к моему удаленному SFTP-серверу, работающему вне облака OpenShift. SFTP-сервер настроен для предоставления только SFTP на порт 22.

Согласно SSH.NET код для подключения к SFTP-серверу:

var connectionInfo = new ConnectionInfo("10.1.2.3",
                                        "guest",
                                        new PasswordAuthenticationMethod("guest", "pwd"),
                                        new PrivateKeyAuthenticationMethod("rsa.key"));
using (var client = new SftpClient(connectionInfo))
{
    client.Connect();
}

Этот код отлично работает при использовании внутри моей интрасети.

Для доступа к удаленному ресурсу в OpenShift я создал выходной маршрутизатор, который предоставляет фиксированный IP-адрес. Все брандмауэры настроены так, чтобы разрешать доступ от OpenShift к моему SFTP-серверу.

Мой вопрос:

Какое значение я должен использовать для первого параметра в классе ConnectionInfo выше? IP-адрес «10.1.2.3» моего удаленного сервера не будет работать изнутри OpenShift, поскольку исходящий трафик должен строго проходить через службу выходного маршрутизатора.

Примечание: Я уже могу получить доступ к удаленному серверу по протоколу HTTPS, используя доступ http-клиента из моего POD с помощью URL-адреса, подобного следующему: https://x -myservice-egress.y-myproject-infra-test: 4433 .

1 Ответ

0 голосов
/ 28 марта 2019

В классе ConenctionInfo я должен предоставить имя выходного маршрутизатора и порт отображения, например, projectName-egress-xyz: 2201.2201 является идентификатором сопоставления, а не физическим портом, он сопоставляется с моим реальным IP-адресом хост-сервера SFTP-сервера и портом 22.

Код ниже сработал!

var connectionInfo = new ConnectionInfo("projectName-egress-xyz:2201",
                                        "guest",
                                        new PasswordAuthenticationMethod("guest", "pwd"),
                                        new PrivateKeyAuthenticationMethod("rsa.key"));
using (var client = new SftpClient(connectionInfo))
{
    client.Connect();
}
...