[svc]ssh批量分发key/批量用户管理

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 root@192.168.14.12"


- 批量脚本
#!/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的末尾。

posted @ 2018-03-16 18:24  _毛台  阅读(554)  评论(0编辑  收藏  举报