1.ssh-keygen非交互式创建秘钥对
具体命令:ssh-keygen -f ~/.ssh/id_rsa -P '' -q
参数:
-P 密码
-f 输出的密钥文件
-q 不输出信息
-t 指定密钥类型
ssh-keygen -f ~/.ssh/id_rsa -P'' -q
2.ssh0copy-id 不提示yes/no分发密钥
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 172.16.1.8
-f:强制
-i:指定密钥文件
-o:指定ssh参数
StrictHostKeyChecking=no:严格公钥检查:no
3.sshpass工具:非交互分发密钥
yum -y install sshpass
sshpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.8
参数: -p password 指定用户密码操作
4.一键配置实践
#!/bin/bash
#yum install sshpass -y
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
for ip in 7 61
do
sshpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$ip
done
#test(测试)
ssh 172.16.1.7 "ip a"
ssh 172.16.1.61 "ip a"
-----------------------------------------------------------------------------
ansible
1.功能介绍
ssh密钥认证+脚本批量管理。
Ansible通过SSH协议实现管理节点与远程节点之间的通信。
涉及管理操作:复制文件、安装服务、服务启动停止管理、配置管理等等。
2.架构介绍
1、连接插件connectior plugins用于连接主机 用来连接被管理端
2、核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情
3、自定义模块 custom modules,根据自己的需求编写具体的模块
4、插件 plugins,完成模块功能的补充
5、剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6、主机清单 inventor,定义ansible需要操作主机的范围
最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块
3.安装ansible
yum install epel-release -y
yum install ansible -y(管理机)
---------------------
rpm -qa |grep libselinux-python
yum install libselinux-python -y(查看有没有libselinux-python,有就不下载了)
4.配置文件
/etc/ansible/hosts主机资产清单文件,用于定义被管理主机的认证信息,
/etc/ansible/ansible.cfg(是否严格公钥检查,设置no后可以使用密码登录)
[root@m01 ~]# ansible oldboy -m shell -a "ip a|grep eth1"
5.登录方法
5.1密钥登录
vim /etc/ansible/hosts
[oldboy]
172.16.1.7
ssh-keygen -f ~/.ssh/id_rsa -P '' -q 创建密钥对
sshpasswd -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$i 分发密钥(写于脚本中)
"-o StrictHostKeyChecking=no" 避免首次使用时输入yes/no部分。 不进行公钥确认。
5.2密码登录
vim /etc/ansible/ansible.cfg
host_key_checking = False(取消备注,允许密码登录)
vim /etc/ansible/hosts
[oldboy_pass]
172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=123456
测试 ansible oldboy_pass -m shell -a "ip a"
ansible oldboy -m copy -a "src=/etc/passwd dest=/tmp/oldgirl owner=oldboy group=oldboy mode=600"
6.ansible命令参数
-m MODULE_NAME, 模块名字,默认command
-a MODULE_ARGS, 模块参数
-f FORKS 并发进程数,默认5个。
-i INVENTORY(default=/etc/ansible/hosts)指定主机列表文件
===================
ansible 批量执行
ansible-doc
ansible-doc -l 查找模块
ansible-doc -s command 查找具体参数
ansible-playbook 组成多个模块的容器。
ansible-galaxy 从galaxy网站下载角色
===================