使用 Putty 或其他软件进行分层 ssh 连接?

使用 Putty 或其他软件进行分层 ssh 连接?

Android 上有一款很棒的应用,名为“Juice SSH”。它具有一项很棒的功能,您可以分层连接服务器,这使得通过多台服务器建立隧道变得非常简单。

例如,您定义一个连接ThisMachine -> A。我们称此连接/配置文件为“Alpha”。然后,您可以定义连接 的 Beta ThisMachine -> B。您只需告诉它使用 Alpha 进行该连接,它就会无缝地建立连接 。ThisMachine -> A -> B然后,您可以将连接 Charlie 定义为ThisMachine -> C,然后告诉它“使用 Beta”。然后它将自动连接到ThisMachine -> A -> B -> C。该链可以任意长。

您甚至可以使用 Alpha、Beta 或 Charlie 在端口上建立隧道或 SOCKS 代理,并以您想要的任意路径建立!

多么棒的功能!我不用考虑就可以用它连接 5 个服务器。如果 ssh 可以完成这项工作,为什么还要创建 VPN?!

有没有办法使用 Putty 或 Windows 上的任何其他类似软件来做到这一点?

编辑:从评论中我看到的内容来看,似乎存在误解。我知道 ssh 隧道。我知道如何在 putty 中创建它们每个连接(我将其用于各种应用程序,例如安全 VNC),问题是每个连接都存在问题。我正在寻找的是自动多级或分层隧道。

答案1

这是可能的使用其他 SSH 客户端来实现,只是更加繁琐 - 例如使用 PuTTY(或其命令行对应部分plink),您必须手动启动与 A 的连接,然后与 B 连接,然后与 C 连接(或者反过来?我不是 100% 理解。)

在 PuTTY 中,这可能可以通过 GUI 保存连接配置文件并通过 plink 加载它们来实现。

  • 例如配置PuTTY连接主机A,并将其保存为“hostA”。

  • 然后配置PuTTY连接到主机B并指定以下“Telnet或本地代理命令” - 然后将配置文件保存为“hostB”:

    plink -nc %host %port -load hostA
    
  • 配置 PuTTY 以连接到主机 C 并指定相同的代理命令,但要使其加载“hostB”配置文件。保存配置文件为“hostC”...

OpenSSH(也适用于 Windows)允许通过在 ~/.ssh/config 中为每个服务器配置“ProxyCommand”来执行相同操作,这样ssh C就不会创建直接 TCP 连接,而是使用给定的命令(在本例中恰好是通过 B 的基于 SSH 的 TCP 隧道):

  • 将其放入 ~/.ssh/config (在 Windows 中也是相同的位置):

    Host thisHost
        ProxyCommand ssh -W %h:%p hostA
    
    Host hostA
        ProxyCommand ssh -W %h:%p hostB
    
    Host hostB
        ProxyCommand ssh -W %h:%p hostC
    
  • 现在运行ssh thisHost将产生三个嵌套的ProxyCommands。

然而,OpenSSH 最近还添加了“代理跳转“选项可以自动执行命令甚至链接:

  • 该选项单独用作代理命令的-J快捷方式:ssh -W

    ssh -J hostB hostA
    
  • 但它也直接接受以逗号分隔的主机列表:

    ssh -J hostA,hostB,hostC hostD
    
  • ~/.ssh/config 设置看起来几乎相同:

    Host thismachine
        ProxyJump hostA,hostB,hostC
    

相关内容