如何将服务器套接字转发到(可能是ssh)客户端

我想知道如何/如何实现以下设置。 它似乎不符合标准的SSH端口转发模型。

我有一个客户端机器A.我有一台运行在机器A上的服务器应用程序,它在端口X上侦听。但是,机器A在普通IP地址后面(由许多用户共享),所以它不能接收到端口的传入连接X从互联网。 但是,我有权访问Amazon EC2中的计算机B,并且确定连接将通过该计算机。 在EC2中将应用程序移动到这台机器是不可能的。

因此,我想要的是让机器B在端口X上侦听并将所有连接/通信转发给机器A.机器A必须看到它,就好像客户端以通常方式连接到端口X一样(可以接受的是源IP显示为机器B)。

解决scheme必须以这样的方式工作,即机器A是连接到机器B的客户机。所以对于ssh,A必须是ssh客户机,而B是ssh服务器。 同样,这是因为机器A在普通IP之后,因此所有连接必须从A传出。

这个设置如何实现? 最好使用通用的免费软件? 先谢谢你。

这可以很容易地通过在机器A上启动的ssh反向连接完成。作为指针应该是有帮助的

ssh -R :PortX:127.0.0.1:PortX user@MachineB 

如果在“机器A”上运行Windows,则plink是ssh(客户机)的替代scheme。

然而,持续的反向端口转发可能会非常棘手,但绝对有可能。

在“机器B”上,您需要启用

 GatewayPorts clientspecified 

在sshd_config中

编辑:

  • 需要PortX前面的“:”(冒号)使端口可用于0/0
  • GatewayPorts clientspecified启用此function。 GatewayPorts是始终使得反向工作的端口世界可达。