ssh-config 多跳隧道

ssh-config 多跳隧道

我在 hostD 上有一个 mysql 服务器。我可以通过 hostC 访问 hostD,通过 hostB 访问 hostC,通过 hostA 访问 hostB,并且我使用家用设备上的 putty 访问 hostA

home(windows)-->hostA-->hostB-->hostC--hostD(mySQL Server)

我的目标是从我的家用设备访问服务器。

另一个挑战是我在 A、B 和 C 上没有任何 root 访问权限。现在我一直在试验“.ssh/config”文件,这是我目前得到的结果:

 Host BTunnel
  HostName hostB
  LocalForward 3306 localhost:3306

 Host CTunnel
  HostName hostC
  LocalForward 3306 localhost:3306

 Host DTunnel
  HostName hostD
  LocalForward 3306 localhost:3306

这样我就可以从 Putty--> hostA 连接并连续输入:

ssh BTunnel
ssh CTunnel
ssh DTunnel

建立从 A 到 D 的隧道。但我想要一个解决方案,我只需要从主机 A 输入 1 个命令即可建立到 D 的隧道,也许可以通过链接现有的主机别名来实现。

有人能提供解决方案吗?

答案1

好吧,您可以直接链接命令。即使没有任何配置文件,您也可以这样做。在 hostA 上执行:

ssh -L 3306:localhost:3306 hostB ssh -L 3306:localhost:3306 hostC ssh -NL 3306:localhost:3306 hostD

如果您有配置和公钥,您可以执行以下操作:

ssh BTunnel ssh CTunnel ssh -N DTunnel

(我会在最后一个命令中包含 -N 因为我不需要 shell 访问权限,只需要转发。)您可以在 .bashrc(或类似文件)中为其创建别名:

alias mytunnel="ssh BTunnel ssh CTunnel ssh -N DTunnel"

您现在就可以开始使用 mytunnel。

相关内容