我想知道是否/如何实现以下设置。它似乎不适合标准 ssh 端口转发模型。
我有一台客户端计算机 A。我在计算机 A 上运行一个服务器应用程序,该应用程序侦听端口 X。但是,计算机 A 位于一个公共 IP 地址后面(由许多用户共享),因此它无法从互联网接收到端口 X 的传入连接。但是,我可以访问 Amazon EC2 中的计算机 B,并且连接可以通过该计算机进行。无法将应用程序移动到 EC2 中的这台计算机。
因此,我想要的是让机器 B 监听端口 X,并将所有连接/通信转发到机器 A。机器 A 必须将其视为客户端以通常的方式连接到端口 X(源 IP 显示为机器 B 是可以接受的)。
解决方案必须以这样的方式工作:机器 A 是连接到机器 B 的客户端。因此,在 ssh 的情况下,A 必须是 ssh 客户端,而 B 必须是 ssh 服务器。同样,这是因为机器 A 位于公共 IP 后面,因此所有连接都必须从 A 发出。
如何实现此设置?最好使用常用且免费的软件?提前谢谢您。
答案1
这可以通过在机器 A 上启动 ssh 反向连接轻松完成。作为指针,这应该是有帮助的
ssh -R :PortX:127.0.0.1:PortX user@MachineB
如果你在“机器 A”上运行 Windows叮当是 ssh(客户端)的替代品。
然而,持久的反向端口转发可能比较棘手,但绝对可能。
在“机器 B”上,您需要启用
GatewayPorts clientspecified
在 sshd_config 中
编辑:
- 需要在 PortX 前面添加“:”(冒号)以使端口可用于 0/0
- 客户端指定的 GatewayPorts启用该功能。GatewayPorts 是始终使反向转发端口世界可达。