通过代理服务器自动进行 SSH 连接

Automate SSH connection over proxy server

我正在尝试编写一个非常简单的 bash 脚本,因此我可以先通过 ssh 连接到代理服务器,然后从代理服务器通过 ssh 连接到目标服务器。这就是网络被访问的方式。我有:

#! /bin/bash
ssh  proxyservername
ssh  destservername

这是行不通的。当我连接到proxyserver时,ssh的第二行并没有执行,我还是需要手动输入命令。是否有一些命令可以添加到脚本中,以便我可以自动连接到目标服务器? (我可以接受提示输入密码。)

我认为您需要类似于 ssh proxyservername 'ssh destservername' 的东西,假设 proxyservername 已经安装了对 destservername 的访问权限。

我认为在类似情况下最常见的解决方案是使用 ssh-R 标志(检查 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,建立一个从那里到 $TARGETNAME 的端口 22 的隧道并附加它的另一个结束到本地计算机上的端口 2222。其他选项告诉 ssh 转到后台并在不再使用时关闭此连接。然后你只需启动另一个连接到端口 2222ssh 实例 localhost.