windows下建立ssh隧道用哪个命令?

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/

但我希望在没有端口转发的情况下做同样的事情。

通过上述命令,我面临着环回接口。

谢谢!!

tel*_*coM 6

我感到困惑和可能的误解。

当您使用以下命令建立 SSH 隧道时:

ssh user@server -L 5900:localhost:5900
Run Code Online (Sandbox Code Playgroud)

...发生以下情况:

  • 当然,SSH 连接已建立并经过身份验证。
  • SSH 客户端将建立一个 TCP 端口转发隧道,用于侦听本地客户端系统上的传入连接 ( -L)
  • 隧道的侦听端将位于您系统上的端口 5900(= 第一个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 隧道。

  • 另一种选择是完全集成到 SSH 客户端。为了在没有任何代理或端口转发的情况下使用 SSH 隧道,VNC(或其他)客户端必须包含 SSH 功能,以便它可以直接从自己的程序代码中利用 SSH 隧道,并有效地使用远程sshd服务器作为自身的扩展,建立从那里到任何地方的网络连接。