我想创建 ssh 隧道来访问 API

I want to create ssh tunnel to access API

我有场景 我的本地机器是 srv1 跳转服务器是srv2 API是运行的目标服务器是srv3

所以,有一个 API 是 运行 并且可以在端口 88 的 srv3 上访问。我无法直接从我的本地计算机(即 srv1)访问它。 但是,我可以从跳转服务器 sev2 ssh 到这个 srv3。我可以从我自己的服务器 srv1.

ssh 到 sev2

现在,有没有办法可以从我的机器(即 srv1)的 88 端口访问 srv3 上的 API 运行?

提前致谢。

此致, 阿米特·乔希

如果 srv3:88 可以从 srv2 访问,您可以做一个简单的隧道。在 srv1 上,执行

ssh -L 8888:srv3:88 srv2

(其中 8888 是大于或等于 1024 的任意数)。在连接持续期间,与 srv1:8888 的任何连接都将传输到 srv3:88

如果您需要隧道在 srv1:88 上(其中 881024 下的任意数字),您将需要 运行 上面的命令作为 root,因为只有 root 可以绑定到特权端口。

如果 srv3:88 只能从 srv3 访问,那么您需要使其更复杂一些:

ssh -oProxyCommand="ssh srv2 -W %h:%p" -L 8888:localhost:88 srv3

(您还可以添加 -N 选项而不是 运行 shell - 所以不是用 exit^D 停止隧道,你^C).