centos6 sshpass批量分发key
yum install sshpass -y
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""
命令说明:
ssh-keygen:生成密钥对命令
-t:指定密钥对的密码加密类型(rsa,dsa两种)
-f:指定密钥对文件的生成路径包含文件名
-P(大写):指定密钥对的密码
- centos6可以,7好像有问题
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no [email protected]"
- 批量脚本
#!/bin/bash
. /etc/rc.d/init.d/functions
yum install sshpass -y >/dev/null
# 创建密钥
\rm ~/.ssh/id_rsa* -f
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "" -q
# 分发公钥
for ip in 61 21 51 31 41 8 7 9 5 6
do
sshpass -p123456 ssh-copy-id -o "StrictHostKeyChecking no" -i /root/.ssh/id_rsa.pub 192.168.1.$ip &>/dev/null
if [ $? -eq 0 ];then
action "fenfa 192.168.1.$ip" /bin/true
else
action "fenfa 192.168.1.$ip" /bin/false
fi
echo ""
done
脚本密钥的批量分发与执行
ssh密钥创建分发(端口号非22)&脚本实现自动创建分发密钥
ansible批量管理用户
- centos7修改密码
$ ansible all -m shell -a 'echo apps:ABCedf123 | chpasswd'
- centos6修改密码
$ ansible all -m shell -a 'echo ABCedf123 | passwd --stdin apps'
- 批量做互信(7上也不太好用): https://www.linuser.com/forum.php?mod=viewthread&tid=45
$ ansible all -m authorized_key -a "user=root state=present key=\"{{ lookup('file', '/root/.ssh/id_rsa.pub') }}\"" -k
[无密码验证,批量分发]
1、所有机器均需创建用户及密码
useradd distribution
echo 123456|passwd --stdin distribution
2、管理机创建密钥(创建密钥命令:ssh-keygen -t dsa)
非交换式创建密钥:
echo -e "\n"|ssh-keygen -t dsa -N ""
或:ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
3、管理机分发密钥
ssh-copy-id -i .ssh/id_dsa.pub "-p 端口 账号@IP"
4、编写脚本(服务安装、优化、批量创建账号密码)使用ssh远程连接并执行命令达到批量管理的目的
ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_dsa.pub
这条命令由多个语句组成,依次分解开来看:
(1)"$ ssh user@host",表示登录远程主机;
(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令:
(3)"$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创建一个;
(4)'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,
重定向追加到远程文件authorized_keys的末尾。