我希望在windows服务器和客户端之间建立一个不需要端口转发的ssh隧道。
我知道用端口转发来建立隧道的命令,但是我只有一个服务器和一个客户端,所以不能使用转发。
ssh user@serverip -L 5900:localhost:5900当我使用这个命令时,我的vnc会话不会通过隧道。因此,我希望避免使用端口转发。
我一直在参考这个指南,根据它,我的vnc应该通过隧道。https://websistent.com/how-to-use-putty-to-create-a-ssh-tunnel/。
但我也希望在没有港口转运的情况下也这么做。
使用上面的命令,我将面临回送接口。
谢谢!!
发布于 2017-12-18 18:38:56
我感觉到了混乱和可能的误解。
当您建立SSH隧道时:
ssh user@server -L 5900:localhost:5900...the发生了以下情况:
-L)上的传入连接。5900)server系统。server系统上隧道的输出端将再次以原始的未加密形式将流量传递给localhost:5900,就像server系统所看到的那样。这不是本地系统的localhost,而是server系统的localhost。这就是为什么你的句子“但我只有一个服务器和一个客户端,所以不能使用转发”是没有意义的。您始终可以从本地系统的localhost将内容转发到远程系统的localhost (反之亦然,使用-R而不是-L)。
端口转发是为什么SSH可以用于保护没有内置支持SSH或任何特殊接口的其他程序的原因。
要成功地使用隧道,您必须了解现在可以通过连接到客户端系统的本地端口5900连接到server's端口5900。或者换句话说,您必须告诉VNC客户端连接到localhost:5900,以使用加密的隧道连接到server。如果您告诉VNC客户端连接到server:5900,则告诉它绕过您为其设置的隧道,并直接连接而不使用SSH加密。
您还说不想使用端口转发。那么,无论您的VNC (或任何其他)客户端是什么,都必须有一些更精细的方法来使用SSH提供的隧道。据我所知,有两种可能性:
现在,SSH客户端将在本地系统的端口1234中设置一个SOCKS代理。进入该代理的所有通信将首先通过加密的SSH隧道到达server系统,然后从那里(同样是以未加密的形式)传递到VNC (或其他)客户端请求的任何目的地。当然,VNC (或其他)客户端必须配置为支持SOCKS4或SOCKS5,您必须将其配置为在localhost:1234上使用SOCKS代理来使用SSH隧道。
sshd服务器作为自身的扩展,建立从那里到任何地方的网络连接。https://serverfault.com/questions/888693
复制相似问题