2015-04-02 112 views
0

我想寫一個非常簡單的bash腳本,所以我可以先ssh到代理服務器,然後從代理服務器,ssh到目標服務器。這就是網絡的設置方式。我有:自動化通過代理服務器的SSH連接

#! /bin/bash 
ssh proxyservername 
ssh destservername 

哪個行不通。當我連接到proxyserver時,第二行ssh沒有執行,我仍然需要手動輸入命令。是否有一些命令可以添加到腳本中,以便我可以自動連接到目標服務器? (我可以提示輸入密碼。)

回答

1

我認爲在類似的情況下最常見的解決方案是使用-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,建立一個隧道的$TARGETNAME端口22其另一端連接到端口2222你的本地計算機上。其他選項會告訴ssh轉到後臺並在不再使用時關閉此連接。然後,您只需啓動另一個ssh實例,該實例連接到localhost上的端口2222

0

我認爲你需要沿着ssh proxyservername 'ssh destservername'的方向,假設proxyservername已經安裝了對sshservername的訪問權限。