ssh公钥分发

在应用ansible的实际情况中,有一个很现实的问题,ansible是需要对主机做ssh免密登陆的,而挨个对主机做免密是非常的繁琐的,挨个敲IP不仅非常的繁琐而且容易出错,为解决这个问题,为以后使用ansible时的便捷,写了一个小脚本,实现批量对主机的免密配置

安装sshpass

1
yum -y install sshpass

生成本地私钥

1
ssh-keygen

创建服务器信息文件

1
2
3
4
cat << EOF >> hosts.txt
192.168.1.10 22 root root
192.168.1.11 22 root root
EOF

分发公钥

1
sh key.sh

脚本内容如下,也放在了Github

1
wget https://raw.githubusercontent.com/bwcxyk/tools_file/master/shell/key.sh

key.sh文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env bash

# author yao
# date 2021.3.1 13:14:36

. /etc/init.d/functions

# 分发公钥
cat hosts.txt | \
while read ipaddr port user passwd
do
sshpass -p ${passwd} \
ssh-copy-id ${user}@${ipaddr} \
-p ${port} \
-i ~/.ssh/id_rsa.pub \
-o StrictHostKeyChecking=no; \
&>/dev/null

# 判断是否成功
if [ $? -eq 0 ]
then
action "${ipaddr} " /bin/true
echo ""
else
action "${ipaddr} " /bin/false
echo ""
fi

done