我试图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隧道,但我不确定我需要哪个命令。
请注意:
我试过的东西:
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.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。
您尝试连接到您的“网关”服务器,但我们不知道是否允许这种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