SSH隧道和端口转发

我请你帮我build立隧道,以满足以下需求:

有根服务器LocalTest,所以我可以做任何事情(Debian SSH)。 此服务器启用访问(IP过滤存在于另一方)端口443服务器,我们可以调用WebserviceServer。 我想使无法打开SSH的人到localtest到达WebserviceServer:443。 所以我需要在Localtest上打开一个服务器端口(例如10000),并将所有内容转发到WebserviceServer:443。 这是第一个任务。

第二个任务是在LocalTest正在侦听的特定端口上作为Web服务服务器(8099)。 为了testing的原因,我需要一段时间把它转发到不同工作站的端口上。 所以所有到LocalTest:8099的stream量和连接都需要被转发到somestation(称为John):someport(5000)。

你可以帮我使用我需要在Localtest上发布的ssh命令来满足需求吗?

这两个问题对我来说听起来不像ssh隧道是最好的解决scheme。

但这里仍然有一些想法来实现这些目标:

问题1:使用LocalTest作为WebserviceServer的反向代理

localtest:~ $ ssh -L *:10000:webserviceserver:443 localhost 

请确保在LocalTest的/ etc / ssh / sshd_config中允许“GatewayPorts”和“AllowTcpForwarding”,并重新启动sshd。

说明

这将打开一个从localtest到它自己的连接,同时在localtest的所有接口上创build一个监听端口10000的隧道,将stream量redirect到webserviceserver端口443

问题2:redirectstream量以testing工作站

与ssh实际上是一样的问题1

 localtest:~ $ ssh -L *:8099:somestation1:5000 localhost 

如果你想连接到另一个testing工作站,只需退出第一个连接并使用类似的东西

 localtest:~ $ ssh -L *:8099:somestation2:5002 localhost 

说明

因为它与问题1基本上是相同的解决scheme它也有相同的解释(只是不同的主机和端口:-))

一些想法

请记住,两个以前的解决scheme打开目标系统(webserviceserver,somestationX)给任何有权访问LocalTest的人

正如我在开始时提到的,我不认为ssh是正确的工具,有几个原因。 其中一些是:

  • 与SSH你只能隧道TCP通信容易
  • ssh很less是永久隧道的最佳解决scheme
  • 问题1听起来更像是一个反向代理(或其他人提到的iptables)的情况,
  • 问题2绝对听起来像iptables对我来说的情况

我个人为第二个问题设置了一个简单的脚本,它允许你重置你想要使用的每个testing系统的iptables规则,比如

 localtest:~ # reset_target somestation 

这样的脚本将不得不在iptables中删除旧的redirect(到另一个testing工作站),然后设置新的。 我现在不太熟悉iptables语法,所以我不能马上提供这样的脚本,但我敢肯定,这里有人可以帮助你,如果需要的话。

这听起来像你所要求的应该能够通过使用IPTables和简单的端口转发来实现 – 至less是第一部分。

至于第二部分,你声明在8099端口有一个'networking服务服务器',你想转发到'约翰'的stream量。 我假设你仍然想让'networking服务服务器'处理信息,在这种情况下,'networking服务服务器'和'约翰'之间的桥梁可能是你要找的。 为此,你可以使用netcat。

了解有关IPTables的端口转发: http : //www.socialhacker.com/howtos/port_forwarding.php

了解使用Netcat: http : //www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf (我相信Netcat的继电器是你想要的)。

希望这个信息有一些帮助。

TYou将要使用-L或-R标志以及相应的:IP:specified,并且在sshd config中启用网关端口