我正在尝试编写一个非常简单的bash脚本,所以我可以首先ssh到代理服务器,然后从代理服务器,ssh到目标服务器。这就是网络设置为访问的方式。我有:
#! /bin/bash
ssh proxyservername
ssh destservername
哪个不起作用。当我连接到proxyserver时,第二行ssh没有执行,我仍然需要手动输入命令。是否有一些命令我可以添加到脚本中,所以我可以自动连接到目标服务器? (我提示输入密码即可。)
答案 0 :(得分:1)
我认为在类似情况下最常见的解决方案是使用-R
的{{1}}标记(检查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
的{{1}}实例。
答案 1 :(得分:0)
我认为您需要ssh proxyservername 'ssh destservername'
的某些内容,假设proxyservername
已安装ssh,可以访问destservername。