#登入凭证配置方式二选一(建议方案二)
方案一:使用用户名+口令ssh登录
[root@manager ~]# cat /etc/ansible/hosts
[test]
172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=123456
172.16.1.8 ansible_ssh_user=root ansible_ssh_pass=123456
172.16.1.9 ansible_ssh_user=root ansible_ssh_pass=123456
方案二:预分发公钥到目标服务器
第一步:在管理服务器上创建密钥对
利用交互方式创建密钥对:
ssh-keygen -t dsa
默认路径:私钥(/root/.ssh/id_dsa)
公钥(/root/.ssh/id_dsa.pub)
如果是普通用户创建密钥对,公钥私钥($HOME/.ssh/)
利用免交互方式创建密钥对:
-f “/root/.ssh/id_dsa” 指定路径
-N “” 指定新密码
-P 指定旧密码
-q 或 >/dev/null 安静输出
ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N ""
第二步:在管理服务器上分发公钥给被管理服务端
利用交互方式实现公钥分发
语法:ssh-copy-id [-i [identity_file]] [user@]machine
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.7
利用免交互方式实现公钥分发
“-o strictHostKeyChecking=no” 第一次远程连接取消yes/no
echo “strictHostKeyChecking=no” >> /root/.ssh/config
“sshpass -p 123456” 不用输入密码
sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.7 -p22"
第三步:批量分发:可以通过脚本的方式,也可以通过命令行的方式
脚本:略
命令行批量分发
for i in {7..20}; do sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.$i -p22" ;done