SSH 隧道或反向隧道

SSH 隧道或反向隧道

我正在尝试建立 SSH 隧道以允许 VNC/ARD 连接(端口 5900 和 3389)。但是我对某件事不确定:

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

我想要通过 SSH 连接到服务器其 IP 为 192.168.103.254。

机器 B192.168.103.2 想要通过隧道连接到机器 A服务器192.168.103.254 和不同的端口(比如说 6001 和 4001)

因此,设置将如下所示:

机器 B192.168.103.2-->VNC 到服务器192.168.103.254:6001(服务器重定向 --> 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

答案1

连接到服务器的本地主机端口 6001 使用以下命令:

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。

答案2

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

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

相关内容