tools ssh批量下发秘钥 发表于 2022-01-10 浏览量 375 没有评论 # sshpass 使用sshpass工具配合ssh-kopy-id编写脚本批量分发密钥: sshpass是一个ssh连接时的免交互工具,首先要安装一下:`yum install sshpass -y` 接下来我们就可以使用sshpass工具了,一条命令形式分发ssh公钥: ``` sshpass -p "ssh登录密码" ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no root@192.168.1.1 此时就可以将公钥发送到被管理的服务器上了: sshpass : ssh的一个免交互式工具 -p : 指定客户端登录的密码 ssh-copy-id :自动分发公钥的工具 -i : 指定本机公钥的路径 -o : StrictHostKeyChecking=no 第一次链接会在know_hosts文件里面写入,这里指不对信息写入。 ``` # 批量脚本 ``` #位置变量这里是只服务器IP地址,随便写一个文档,填入服务器IP地址。 #!/bin/bash password='123' for ip in `cat $1` do echo -e "\033[32m测试$ip 是否在线...\033[0m" ping $ip -c2 &>/dev/null if [ $? -gt 0 ];then echo -e "\033[31m$ip 无法ping通,请检查!!!\n\033[0m" else echo -e "\033[33m$ip 正常,正在下发秘钥...\033[0m" sleep 1 sshpass -p "$password" ssh-copy-id -i /root/.ssh/id_rsa.pub -o StrictHostKeyChecking=no $ip &>/dev/null echo -e "\033[35m$ip 秘钥分发成功!\n\033[0m" fi done ``` # 执行效果 ``` [root@harbor /]# cat host.txt 172.16.7.201 172.16.7.202 172.16.7.203 172.16.7.204 [root@harbor /]# sh ssh.sh host.txt 测试172.16.7.201 是否在线... 172.16.7.201 正常,正在下发秘钥... 172.16.7.201 秘钥分发成功! 测试172.16.7.202 是否在线... 172.16.7.202 正常,正在下发秘钥... 172.16.7.202 秘钥分发成功! 测试172.16.7.203 是否在线... 172.16.7.203 正常,正在下发秘钥... 172.16.7.203 秘钥分发成功! 测试172.16.7.204 是否在线... 172.16.7.204 无法ping通,请检查!!! ```