SSH LocalForward——跳跃主机

SSH LocalForward——跳跃主机

我目前正在设置我的 Linux 系统,以使一些日常任务变得更容易。我想将 SSH 配置为能够使用终端跳转主机。我读到了有关 LocalForward 和 ProxyJump 的内容。目标是连接到第一台服务器,通过它建立连接隧道,然后连接到第二台服务器(因为第二台服务器位于我只能从第一台服务器到达的区域中)。

现在我所做的是 ~/.ssh/config 文件中的以下代码片段:

Host tunnel
    HostName <firstServer>
    IdentityFile ~/.ssh/example.key
    LocalForward 9906 <secondServer>:22
    User helloWorld

如果我现在使用“ssh 隧道”连接到服务器,我可以成功连接到第一台服务器。如果我现在使用 telnet 使用“telnet secondaryServer 9906”检查第二台服务器,我可以看到 SSH 正在其上运行。如果我现在尝试使用“ssh localhost:9906”通过 SSH 连接到第二个服务器,我会得到主机名无法解析的信息(对于 127.0.0.1:9906 也是如此)。

后来我读到了“ProxyJump”选项并尝试了以下操作:

Host tunnel
    HostName <firstServer>
    ProxyJump <secondServer>:22
    User helloWorld

然而,连接永远不会建立。它卡在“连接到”上。

我在这里遗漏了一些明显的东西吗?也许我误解了整个 SSH 转发的基本概念?我习惯使用 Putty,但最近我转向 Linux,并希望适当地设置一切。

答案1

这个~/.ssh/config将通过ProxyJump目标,并将端口一直绑定到目标

Host jump
  HostName      <server-ip>
  User          user-name
  IdentityFile  ~/.ssh/key.pem
  LocalForward  8888 localhost:8888
Host target
  HostName      <server-ip>
  User          user-name
  IdentityFile  ~/.ssh/key.pem
  ProxyJump     jump
  LocalForward  8888 localhost:8888

用法:

  • SSH 目标
  • ssh -v target # 查看详细调试
  • 答案2

    我们在我们的团队中使用这个 oneliner:

    $ ssh zone_user@zone_host -o ProxyCommand="ssh -W %h:%p proxy_user@proxy_host"
    

    笔记:

    1. 确保两者都存在proxy_user@proxy_host并且zone_user@zone_host您的私钥位于~/.ssh/authorized_keys.
    2. 您不必分配和“隧道”额外的端口来通过 SSH 转发 SSH。
    3. 我不建议过多地摆弄~/.ssh/config,它很容易出错,而且文档不友好。最好分享一下像上面那样的单线。

    干杯!

    相关内容