做ssh互信的要求:
不手动敲yes,和密码... ...
目录
实现思路:
- 一台主机生成密钥对儿信息
- 配置ssh,不返回提示信息
- 连接自己,生成“authorized_keys”
- 将.ssh目录通过ansible传给其他主机
具体操作
# 1. 安装epel源
yum -y install epel-release
# 2. 安装ansible
yum -y install ansible
# 3. 修改ansible hosts配置文件
# 主机多的话,可以用shell生成ansible所需的信息
for i in {1..18}; do echo -e 10.100.40.$i "\t" ansible_ssh_pass=centos; done

# 添加要配置的主机ip和密码
vim /etc/ansible/hosts
| 10.100.40.1 ansible_ssh_pass=centos 10.100.40.2 ansible_ssh_pass=centos # ... ... 此处省略一万行 |
# 4. 生成密钥,并传输
# 注意:连接自己时,需要输入一次密码,之后就是完全自动化了
# vim 01ss.sh
# 变量
# 相关IP前3字符
Host_Net_Ip="10.100.40"
# 不交互,生成密钥对儿
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -q
# # 远程连接主机,不返回提示信息
echo "StrictHostKeyChecking no" > /root/.ssh/config
echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config
# 第一次连接远程主机,生成~/.ssh/authorized_keys 和 known_hosts
oneself_ip=`ip a | grep ${Host_Net_Ip} | awk '{print $2}' | awk -F/ '{print $1}'`
ssh-copy-id root@${oneself_ip}
# 传输密钥对儿,到需要控制的主机
ansible all -m copy -a "src=/root/.ssh dest=/root/ group=root owner=root"
ansible all -m command -a "chmod 0700 /root/.ssh"
ansible all -m command -a "chmod 0600 /root/.ssh/authorized_keys /root/.ssh/id_rsa"
ansible all -m command -a "chmod 0644 /root/.ssh/id_rsa.pub"
# 5. 测试是否可以远程管理主机
ansible all -m ping
本文介绍如何使用Ansible自动化工具实现SSH互信部署。主要内容包括安装epel源、Ansible及配置hosts文件,生成并传输密钥对,最终实现无需密码远程管理多台主机。
3064





