Ver*_*rma 0 ssh vnc ssh-tunnel
我希望在Windows服务器和客户端之间建立一个没有端口转发的ssh隧道。
我知道用于通过端口转发建立隧道的命令,但我只有一个服务器和一个客户端,因此无法使用转发。
ssh user@serverip -L 5900:localhost:5900
Run Code Online (Sandbox Code Playgroud)
当我使用此命令时,我的 vnc 会话不会通过隧道。因此我希望避免使用端口转发。
我一直在参考这个指南,根据它我的 vnc 应该穿过隧道。https://webcient.com/how-to-use-putty-to-create-a-ssh-tunnel/
但我希望在没有端口转发的情况下做同样的事情。
通过上述命令,我面临着环回接口。
谢谢!!
我感到困惑和可能的误解。
当您使用以下命令建立 SSH 隧道时:
ssh user@server -L 5900:localhost:5900
Run Code Online (Sandbox Code Playgroud)
...发生以下情况:
-L
)5900
)server
系统server
将再次以其原始未加密的形式向前传递流量,正如localhost:5900
系统server
所看到的那样。这不是localhost
您本地系统的,而是localhost
系统的server
。这就是为什么你的句子“但我只有一个服务器和一个客户端,所以不能使用转发”毫无意义。您始终可以将内容从本地系统的本地主机转发到远程系统的本地主机(反之亦然,使用-R
而不是-L
)。
端口转发是 SSH 可用于保护其他没有内置 SSH 支持或没有任何特殊接口的程序的原因。
要成功使用隧道,您必须了解您现在可以server
通过连接到客户端系统的本地端口 5900 来到达 的端口 5900。或者换句话说,您必须告诉 VNC 客户端连接到localhost:5900
使用server
加密的连接到隧道。如果您告诉 VNC 客户端进行连接server:5900
,则等于告诉它绕过您为其设置的隧道,直接连接,而无需 SSH 加密。
您还说您不想使用端口转发。那么,无论您的 VNC(或任何其他)客户端是什么,都必须有一些更复杂的方法来使用 SSH 提供的隧道。据我所知,有两种可能:
SOCKS4/SOCKS5 代理支持:您建立 SSH 连接
ssh 用户@服务器 -D 1234
现在,SSH 客户端将在本地系统的端口 1234 中设置 SOCKS 代理。进入该代理的所有流量将首先通过加密的 SSH 隧道到达系统server
,然后从那里(再次以未加密的形式)到达 VNC(或其他)客户端请求的任何目的地。当然,VNC(或其他)客户端必须可配置为支持 SOCKS4 或 SOCKS5,并且您必须将其配置为使用 SOCKS 代理才能localhost:1234
使用 SSH 隧道。
sshd
服务器作为自身的扩展,建立从那里到任何地方的网络连接。