前言
由于做CMDB需要通過ansible來和遠程主機進行互信王浴,在遠程主機數(shù)量較多的情況下稳其,通過ssh-copy-id一個一個添加并不現(xiàn)實瓮具,因此可以通過sshpass + ssh-copy-id 進行批量互信蜈项。
操作過程
1.新建文件保存主機信息
包含主機的IP、端口皿桑、密碼
cat hostsname.txt
10.2.3.42 22 dddddd
10.2.3.43 22 dddddd
10.2.3.44 22 dddddd
10.2.3.45 22 dddddd
10.2.3.46 22 dddddd
10.2.3.47 22 dddddd
10.2.3.48 22 dddddd
10.2.3.49 22 dddddd
10.2.3.50 22 dddddd
10.2.3.51 22 dddddd
10.2.3.52 22 dddddd
10.2.3.53 22 dddddd
10.2.3.54 22 dddddd
10.2.3.55 22 dddddd
10.2.3.56 22 dddddd
10.2.3.57 22 dddddd
10.2.3.58 22 dddddd
10.2.3.59 22 dddddd
10.2.3.60 22 dddddd
10.2.3.61 22 dddddd
10.2.3.62 22 dddddd
10.2.3.63 22 dddddd
10.2.3.64 22 dddddd
10.2.3.65 22 dddddd
10.2.3.66 22 dddddd
10.2.3.67 22 dddddd
10.2.3.68 22 dddddd
2.使用sshpass實現(xiàn)ssh自動填寫密碼
使用sshpass將密碼傳遞給ssh-copy-id , 使得當需要輸入密碼時, 能夠自動讀取變量進行輸入并完成驗證:
腳本cat copy_ssh_id.sh如下:
#!/usr/bin/env bash
cat hostsname.txt | while read hostname ipaddr passwd
do
sshpass -p $passwd ssh-copy-id $ipaddr
done
也可以使用單條命令:
cat hostsname.txt | while read hostname ipaddr passwd; do sshpass -p $passwd ssh-copy-id $ipaddr; done
注意:
沒有提示要求輸入yes 進行確認,是我之前就在ssh_config文件中設置了不進行確認:
vim /etc/ssh/ssh_config
#Add at the end of file
StrictHostKeyChecking no
或者
sed -i '/StrictHostKeyChecking/s/^#//; /StrictHostKeyChecking/s/ask/no/' /etc/ssh/ssh_config