我可以将这些 SSH 隧道命令组合成一个命令吗?
Posted
技术标签:
【中文标题】我可以将这些 SSH 隧道命令组合成一个命令吗?【英文标题】:Can I combine these SSH tunneling commands into one command? 【发布时间】:2020-08-07 15:50:14 【问题描述】:我有一个通过 SSH 访问某个服务器的两步解决方案:
第 1 步,在 bash 中:
ssh -L 127.0.0.1:5000:server2.com:22 server1.com
第 2 步,在新的 bash 会话中:
ssh -P 5000 127.0.0.1 # This gets me into server2.com
Q1:有什么办法可以将这两个命令组合成一个 ssh 命令,并且...
Q2:我可以在我的~/.ssh/config
中为这个连接设置一个主机条目吗(允许我输入例如ssh my-tunnel
)?
我想这归结为以某种方式链接主机。我对此很陌生,无法完全弄清楚...
【问题讨论】:
您可以将第一个命令包装到服务中以使此类隧道成为伪永久的。我使用这种方法来保持这样的隧道 24/7。 【参考方案1】:我遇到了this question,对 ssh 支持跳转主机这一事实感到惊讶。
您可以使用单个命令连接到目标服务器,而 ssh 将负责中间跃点。
ssh -J server1.com server2.com
-J [user@]host[:port] 通过先与跳转主机建立 ssh 连接,然后建立 TCP 连接到目标主机 从那里转发到最终目的地。可以指定多个跳跃跳跃 逗号字符。这是指定 ProxyJump 配置指令的快捷方式
这里是SSH config对应的跳转主机配置:
Host jumphost
Hostname server1.com
User $YOUR_USERNAME
Port 22
Host my-tunnel
Hostname server2.com
User $YOUR_USERNAME
Port 22
ProxyJump jumphost
...启用命令:ssh my-tunnel
【讨论】:
太棒了,谢谢!我在相应的 ssh 配置上添加了一个代码块。-J
和 ProxyJump
相对较新(我相信是在 2016 年年中推出的)。以上是关于我可以将这些 SSH 隧道命令组合成一个命令吗?的主要内容,如果未能解决你的问题,请参考以下文章