我正在尝试编写一个非常简单的 bash 脚本,因此我可以先通过 ssh 连接到代理服务器,然后从代理服务器通过 ssh 连接到目标服务器。这就是网络被访问的方式。我有:
#! /bin/bash
ssh proxyservername
ssh destservername
这是行不通的。当我连接到proxyserver时,ssh的第二行并没有执行,我还是需要手动输入命令。是否有一些命令可以添加到脚本中,以便我可以自动连接到目标服务器? (我可以接受提示输入密码。)
最佳答案
我认为在类似情况下最常见的解决方案是使用 -R
ssh
的标志(检查 man ssh
)。您可能还想阅读有关 -f
的内容和 -o ExitOnForwardFailure=yes
.
我使用的模式是这样的:
ssh -f -o ExitOnForwardFailure=yes -R localhost:2222:$TARGETNAME:22 $PROXYNAME sleep 1 &&
ssh -p 2222 localhost
(其中 2222
基本上是您可以在本地计算机上使用的任何端口)。
-R
标志告诉 ssh
连接到 $PROXYNAME
, 建立一条从那里到端口 22
的隧道的 $TARGETNAME
并将其另一端连接到端口 2222
在你的本地机器上。其他选项告诉ssh
转到后台并在不再使用时关闭此连接。然后你就开始另一个ssh
连接到端口的实例 2222
在 localhost
.
关于linux - 通过代理服务器自动进行 SSH 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29423414/