2013-10-28 230 views
0

我想使用ssh密鑰身份驗證。我有一個包含文件:ssh密鑰使用bash密碼

IP位置

IP位置

我有一個bash腳本如下:

declare -A mylist 
declare -A myarray 

i=1 

while read line ; do 

     mylist[$i]=$(echo $line | awk '{print $1}') 
     myarray[$i]=$(echo $line | awk '{print $2}') 

((i++)) 

done <file.conf 

for ip in "${mylist[@]}"; do 
for location in "${myarray[@]}" ; do 

     ssh ${ip} tail -f ${location} > /home/log_${ip} 2>/dev/null & 


done 

done 

當我做到這一點要求我密碼的所有時間。我不知道如何生成一個密鑰,你可以告訴我的步驟。

+1

https://en.wikipedia.org/wiki/Ssh-keygen – Basilevs

回答

3

從您的主機上執行以下命令作爲一般用戶。這將在該主機上爲該用戶生成公鑰和私鑰。

ssh-keygen 

鑰匙將下默認的〜/ .ssh創建,通常命名爲id_rsa(私鑰)id_rsa.pub(公鑰) 現在的公共密鑰可以被複制到任意數量的遠程計算機和所有進一步安全登錄到這些主機都不會提示輸入密碼。

ssh-copy-id [email protected] 
+0

我有一個小問題。我如何刷新已保存的ips? – user2864207

+0

不清楚你的意思是刷新。如果目標主機IP已經改變,那麼您可以從〜/ .ssh/known_hosts中刪除條目,然後只重複上述第二步 – JackDVD

0

如果你不想使用密碼和安全性並不重要,另一個解決方案是使用sshpass

這通常不是一個好主意,特別是在安全的環境中,但在某些情況下它可以提供幫助。

sshpass -p raspberry ssh [email protected] 

這可以用

ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] 

結合起來,以避免防止發生自動化的腳本確認的問題。

同樣,只有在不同的機器共享IP且安全性不重要的開發系統中使用它。

https://ownyourbits.com/2017/02/22/easy-passwordless-ssh-with-sshh/