在 Windows 中哪个命令用于建立 ssh 隧道?

在 Windows 中哪个命令用于建立 ssh 隧道?

我希望在 Windows 服务器和客户端之间建立一个无需端口转发的 ssh 隧道。

我知道用于建立带有端口转发的隧道的命令,但我只有一个服务器和一个客户端,所以无法使用转发。

ssh user@serverip -L 5900:localhost:5900

当我使用此命令时,我的 vnc 会话不会通过隧道。因此,我希望避免使用端口转发。

我一直在参考本指南,根据它,我的 vnc 应该可以通过隧道。https://websistent.com/how-to-use-putty-to-create-a-ssh-tunnel/

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

使用上述命令我面对的是环回接口。

谢谢!!

答案1

我感觉到了混乱和可能存在的误解。

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

ssh user@server -L 5900:localhost:5900

...发生了以下事情:

  • 当然,SSH 连接已经建立并经过验证。
  • SSH 客户端将设置 TCP 端口转发隧道,用于侦听本地客户端系统上的传入连接(-L
  • 隧道的监听端将位于系统的 5900 端口(=第一个5900
  • 加密隧道将从您的本地客户端系统到server系统
  • 系统上的隧道输出端server将再次以原始的未加密形式传递流量,以localhost:5900 系统server认为。这不是localhost你本地系统的,而是系统localhostserver

这就是为什么你的句子“但我只有一个服务器和一个客户端,所以不能使用转发”毫无意义。你总是可以将内容从本地系统的 localhost 转发到远程系统的 localhost(反之亦然,使用-R而不是-L)。

端口转发是 SSH 可用于保护其他没有内置 SSH 支持或任何特殊接口的程序的原因。

要成功使用隧道,您必须了解,现在可以server通过连接到客户端系统的本地端口 5900 来访问 的端口 5900。换句话说,您必须告诉 VNC 客户端连接到使用加密隧道localhost:5900连接到。如果您告诉 VNC 客户端连接到,则表示您告诉它绕过您为其设置的隧道,直接连接,而无需使用 SSH 加密。serverserver:5900

您还说您不想使用端口转发。那么,无论您的 VNC(或任何其他)客户端是什么,都必须有更复杂的方法来使用 SSH 提供的隧道。据我所知,有两种可能性:

  • SOCKS4/SOCKS5 代理支持:你与

    ssh 用户@服务器-D 1234

现在,SSH 客户端将在本地系统的端口 1234 中设置 SOCKS 代理。进入该代理的所有流量将首先通过加密的 SSH 隧道到达系统server,然后从那里(再次以未加密的形式)到达 VNC(或其他)客户端请求的任何目的地。当然,VNC(或其他)客户端必须可配置为支持 SOCKS4 或 SOCKS5,并且您必须将其配置为使用 SOCKS 代理才能localhost:1234使用 SSH 隧道。

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

相关内容