2012-04-11 45 views
1

從我的bash腳本執行命令時,我目前面臨一個奇怪的問題。從我的bash腳本中執行ssh IPAddressA -l用戶「ssh -l IPAddressB ls」的問題

我的劇本有這個命令,

ssh IPAddressA -l root "ssh -l root IPAddressB ls" 

其中IPAddressA & IPAddressB將通過相互訪問的兩臺機器的硬編碼IP地址來代替。

用戶每次詢問時都會輸入密碼。但是,輸入IPAddressA的密碼後,我收到此錯誤。

[email protected]'s password: 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 
]$ 

回答

1

當提示內部ssh密碼時,沒有交互鍵盤可用。你可以通過SSH隧道獲得你想要的。

ssh [email protected] -L2222:IPAddressB:22 -Nf 
ssh [email protected] -p2222 

第一行打開一條隧道,讓你的本地主機2222端口指向IPAddressB:22和d沒有執行命令把在後臺(-f)ssh的過程(-N
第二行通過新開通連接IPAddressB:22隧道

2

有應該是一個更好的招..

在〜/ .ssh/config中添加對IPAddressA主機條目,配置如下所示:

Host IPAddressA 
    User someguy 
    ProxyCommand ssh -q [email protected] nc -q0 %h 22 

這種方法的華麗之處在於,你可以在你的shell命令行沒有任何奇怪的東西的情況下使用scp/sftp到IPAddressB。

要獲得獎勵積分,請爲自己生成一個公鑰對,並將公鑰放在〜/ .ssh/authorized_keys中的IPAddressA和IPAddressB上。如果你沒有輸入密碼,你甚至不會打擾到輸入密碼。

此外,如果您嘗試訪問僅具有單個入口點的遠程LAN,則SSH實際上可以充當VPN客戶端,通過代理主機橋接您。當然,遠程端需要支持tap/tun設備(就像你的本地機器一樣)......但是如果它已經在那裏了......超級無痛機制可以彌合。

+0

很感謝!我喜歡VPN部分。 – 2012-04-11 12:23:18