SSH隧道或反向隧道

我试图build立一个SSH隧道来允许VNC / ARD连接(端口5900和3389)。 但是我不确定某件事情:

假设机器A的 IP为192.168.103.1,并且在端口5900和3389上运行服务。

我想SSH到IP 192.168.103.254的服务器

机器B 192.168.103.2希望通过使用服务器 192.168.103.254和不同端口(比如说6001和4001)上的隧道连接到机器A,

所以,设置将如下所示:

机器B 192.168.103.2 – > VNC到服务器 192.168.103.254:6001(服务器redirect – > 192.168.103.1:5900)

我知道一些关于SSH隧道和反向SSH隧道,但我不确定我需要哪个命令。

请注意:

  • 客户端计算机必须连接到服务器(由于客户端每次都有不同的IP地址,所以不能使用其他方式)

我试过的东西:

ssh -f [email protected] -L 6001:localhost:5900 -N 

此命令成功,但是当我尝试连接到它,我得到一个连接拒绝错误:

 Tims-Macbook-Pro:~ Tim$ telnet server.hostname.net 6001 Trying 192.168.103.254... telnet: connect to address 192.168.103.254: Connection refused telnet: Unable to connect to remote host 

我也试过这个

 sudo ssh -NT -R 6001:localhost:5900 [email protected] 

当我尝试访问它时,该命令也会给出拒绝连接错误。

 Tims-Macbook-Pro:~ Tim$ telnet server.hostname.net 6001 Trying 192.168.103.254... telnet: connect to address 192.168.103.254: Connection refused telnet: Unable to connect to remote host 

使用以下命令连接到服务器的本地主机端口6001时,应该到达机器A的端口5900:

 ssh -L 6001:192.168.103.1:5900 [email protected] 

查看这个资源,深入了解SSH隧道: http : //www.linuxhorizo​​n.ro/ssh-tunnel.html

更新:

如果您需要多台客户机通过服务器访问机器A的5900端口,请执行以下操作:

 Client1 Client2 ---> port 6001 ---> 192.168.103.254 ---> port 5900 --> 192.168.103.1 Client3 

你需要运行这个命令(在客户端 ):

 ssh -L 0.0.0.0:6001:192.168.103.1:5900 [email protected] 

连接到服务器端口6001的所有客户端将通过该命令到达机器A的端口5900。

您尝试连接到您的“网关”服务器,但我们不知道是否允许这种types的stream量。 最好的办法就是尝试将远程端口映射到本地端口,就像你在第一个例子中所做的那样,但是你需要实际指向你要连接的服务器,像这样:

 ssh -f [email protected] -L 6001:192.168.103.1:5900 -N 

如果不是,那么ssh如何知道哪个IP需要转发连接? 通过这样做,您可以通过server.hostname.net的SSH隧道将远程服务器192.168.103.1的端口5900映射到本地(本机)端口(本例中为6001)。

现在,连接你只需访问一个本地端口:

 telnet localhost 6001