我想創建一個ssh連接,並在腳本內部在遠程服務器上執行一些操作。如何從bash腳本中ssh?
但是,終端提示我輸入密碼,然後在終端窗口而不是腳本中打開連接。在我退出連接之前,這些命令不會被執行。
我怎樣才能從一個bash腳本ssh中?
我想創建一個ssh連接,並在腳本內部在遠程服務器上執行一些操作。如何從bash腳本中ssh?
但是,終端提示我輸入密碼,然後在終端窗口而不是腳本中打開連接。在我退出連接之前,這些命令不會被執行。
我怎樣才能從一個bash腳本ssh中?
如果您想讓密碼提示消失,請使用基於密鑰的身份驗證(described here)。
運行命令通過SSH遠程你必須給他們作爲參數傳遞給SSH,如下所示:
根@主持人:〜#SSH根@ WWW「PS -ef | grep apache | grep -v grep |廁所-l」
您需要做的是爲腳本運行的用戶交換SSH密鑰。看看this tutorial
這樣做後,腳本將運行而不需要輸入密碼。但是,出於安全考慮,您不想爲root用戶執行此操作!
如果你想繼續使用的密碼,而不是使用密鑰交換,那麼你可以做到這一點‘指望’,像這樣:
#!/usr/bin/expect -f
spawn ssh [email protected]
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
還有另一種方式用做共享連接,例如:某人使用密碼啓動連接,並且每個後續連接都將在相同通道上進行多路複用,從而無需重新驗證。 (和它的也更快)
# ~/.ssh/config
ControlMaster auto
ControlPath ~/.ssh/pool/%[email protected]%h
,那麼你只需要登錄,只要你登錄時,bash腳本將能夠打開SSH連接。
然後,您可以從工作停止腳本,當有人還沒開業就已經通過信道:
ssh ... -o KbdInteractiveAuthentication=no ....
如果我有多個行(只是爲了代碼清晰),我怎麼能傳遞到SSH是什麼? – blong 2012-01-24 20:24:07
使用分號作爲命令分隔符。 'cd/var/www; cp foo bar;' – halfdan 2012-01-24 23:00:55
修復了斷開的鏈接。 – halfdan 2013-05-06 13:00:42