2014-09-29 191 views
0

我很難通過bsh腳本爲ssh連接傳遞密碼。我有一切工作,但它仍然提示我的密碼,而不是拉存儲的密碼。請看看下面的腳本的一部分,讓我知道如果有什麼明顯的,我做錯了:Bash腳本 - SSH連接

#! /bin/bash 
echo "Please enter a username:" 
read user 
echo "please enter a password:" 
read password 
echo please enter an IP address:" 
read ip 

ssh "$user"@"$ip" 
expect "password:" 
send "<password>\r" 
interact 

我已經嘗試了「發送」線的不同變化。例如,我試過「密碼\ r」和密碼\ r。我也嘗試修改「expect」行來鏡像嘗試SSH連接返回的確切文本。

感謝您提供任何幫助。

+0

也許這將幫助:http://stackoverflow.com/questions/4780893/use-expect-in-bash-script-to-provide-password -to-ssh-command – 2014-09-29 14:04:55

回答

1

SSH包含通過重定向標準I/O來防止密碼竊取的代碼。

正確的解決方案是生成與ssh-keygen的私鑰/公鑰對。在遠程端安裝公鑰。 ssh-copy-id將有所幫助。

然後,您可以使用SSH代理將私鑰加載到內存中,並且SSH不會要求輸入密碼或關鍵短語。

相關:

+0

或者他可以使用sshpass(開源)。 http://linux.die.net/man/1/sshpass – 2014-09-29 17:15:46