如何使用 SSH.NET 从 OpenShift .NET Core POD 连接到远程 SFTP 服务器

How to connect to remote SFTP server from OpenShift .NET Core POD using SSH.NET

我在 OpenShift 中有一个 .NET Core 2.2 服务 运行。我的服务使用 SSH.NET 连接到我在 OpenShift 云之外的远程 SFTP 服务器 运行。 SFTP 服务器配置为仅在端口 22 上提供 SFTP。

根据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 class 中的第一个参数使用什么值?我的远程服务器的 IP 地址“10.1.2.3”在 OpenShift 内部不起作用,因为出站流量必须严格通过出口路由器服务。

注: 我已经可以使用来自我的 POD 的 http 客户端访问通过 HTTPS 访问远程服务器,使用 URL 像这样:https://x-myservice-egress.y-myproject-infra-test:4433

在 ConenctionInfo 中 class 我必须提供出口路由器名称和映射端口,例如projectName-egress-xyz:2201。 2201是映射ID不是物理端口,它映射到我真实的SFTP服务器主机IP和端口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();
}

将其替换为出口路由器名称和映射到您在出口配置中定义的目标端口的源端口。

Ex 出口-xyz:源端口