.net core 如何使用SSH.NET从OpenShift.NET核心POD连接到远程SFTP服务器

.net core 如何使用SSH.NET从OpenShift.NET核心POD连接到远程SFTP服务器,.net-core,openshift,sftp,ssh.net,.net Core,Openshift,Sftp,Ssh.net,我有一个.NETCore2.2服务在OpenShift中运行。我的服务用于连接在OpenShift云外部运行的远程SFTP服务器。SFTP服务器配置为仅在端口22上提供SFTP 根据,连接到SFTP服务器的代码为: var connectionInfo = new ConnectionInfo("10.1.2.3", "guest", n

我有一个.NETCore2.2服务在OpenShift中运行。我的服务用于连接在OpenShift云外部运行的远程SFTP服务器。SFTP服务器配置为仅在端口22上提供SFTP

根据,连接到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从我的POD使用http客户端访问远程服务器,URL如下:

在ConenctionInfo类中,我必须提供出口路由器名称和映射端口,例如projectName出口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:源端口

您是否可以使用与.NET代码运行在同一台机器上的任何独立SFTP客户端连接到SFTP服务器?不可能!我们使用私有/本地RedHed云,我没有权限在那里运行/安装任何工具。好吧,我们首先需要知道,你是否有网络连接。在你证明这一点之前,你不存在编程问题。我在“注意”问题中有一个网络连接状态。网络和防火墙都已设置好,端到端的连接对于https工作正常。这个问题是SSH.NET和OpenShift的问题。为什么要倒计时!!!!至少为原因留下评论!!!