我意識到與此相關的風險,但是我仍然想要這樣做。如何使用expect來自動輸入SSH密碼?
我試圖遵循其他答案,但沒有成功。
基本上所有我想要的是在啓動時打開該SSH隧道。所以我正在製作一個腳本,我可以在系統啓動時將cron作業放在處。
到目前爲止,腳本是這樣的:
#!/usr/bin/expect -f
spawn java -jar client.jar </dev/null &>/dev/null &
spawn ssh -fN -i /home/my_user/.ssh/id_rsa -R 20001:localhost:22 [email protected]_host
expect "*passphrase*"
send "my passphrase\r"
結果我這個得到的是,無論是Java進程保持運行(如果在所有甚至推出),並且無論是SSH連接保持活着(如果它甚至啓動並且密碼由send
命令正確插入)。
我在這裏做錯了什麼?
謝謝!
爲什麼你同時使用密鑰和密碼?如果你自己在終端輸入'ssh'命令,會發生什麼? – redneb
它問我密碼。密碼與私鑰關聯 – PedroD
如果您願意編寫腳本並在腳本中對密碼進行硬編碼,爲什麼不以未加密的形式存儲密鑰?如果您爲其他主機使用相同的密鑰,您也可以爲此創建一個專用密鑰。 – redneb