我正在尝试建立 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.linuxhorizon.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