xshell搭建ssh隧道
2026/7/22 16:08:56 网站建设 项目流程

1.场景

  • 涉及4台机子:本地电脑A远程服务器B远程服务器C远程服务器D
  • 4台机子的互联访问情况如下:
    • A无法直接访问D
    • A能访问B
    • B能访问C
    • C能访问D
  • 需要想办法从本地电脑A直接访问服务器D

2.ssh 逐台跳转到服务器D手动输入逐台跳转

  • 使用xshell或其他终端:
    • 从本地电脑A先ssh访问B,输入B的账号密码:会话1[服务器B]
    • 接着继续ssh访问C,输入C的账号密码:会话1[服务器C]
    • 接着继续ssh访问D,输入D的账号密码:会话1[服务器D]
  • 这样的操作,逐台跳转到目标服务器D
  • 手动输入ssh命令、账号密码过多

3.建立ssh隧道跳转服务器Dssh隧道

  • 基于上述手动输入命令跳转,过于复杂
  • 希望能达到从本地电脑A直接ssh访问D,输入D的账号密码
    • 利用ssh隧道
    • 先本地电脑A ssh访问B,建立local->C的ssh隧道
      • xshell正常连接B,提供B的ip/port/账号/密码
      • 设置ssh隧道,设置local:port->C:22的映射
      • 重新连接B
      • 执行vi等长连接操作
    • 之后本地电脑A 直接访问C
      • 连接local:port,提供C的账号/密码
      • 能直接连接C,不必手动从B跳转C
    • 后续连接D,类似
      • 在连接C后,设置local:port2->D:22的映射即ssh隧道
      • 能直接连接D,连接local:port2,提供D的账号/密码
  • 如何减少手动操作
  • 其中A->B->C的ssh隧道,参考

4.类似还可建立其他隧道

  • 上述为ssh隧道,让本地机器能直接访问需要多跳的机器:
    • ssh localhost:xxxx
  • 建立其他隧道
    • mqtt隧道:mqtt localhost:yyyy
    • http隧道:
      • curl -v http://127.0.0.1:8000 // 验证隧道成功
      • curl --resovle 10.10.10.10:8000:127.0.0.1 -v http://10.10.10.10:8000/api/xxx // 验证resolve参数
      • curl --resovle … -X POST … -H … -d …

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询