概述
无论通过kvm自创建的服务器还是云服务器,最初始状态大多数都是使用密码登录到服务器。这样是很不安全的。而ansible是极力推荐使用密钥对服务器进行管理的。所以,我们需要创建一对rsa密钥分发到服务器上,以方便使用ansible对服务器进行管理。
配置
创建密钥
ssh-keygen -t ed25519 -f ./id_ed25519
- -t:加密协议
- -f:指定密钥存放的位置及名称

创建Ansible脚本的主机列表
# vim host.ini
# 文件host.ini的内容如下
[ceph]
192.168.3.51
192.168.3.52
192.168.3.53
192.168.3.54
192.168.3.55
192.168.3.56
192.168.3.57
192.168.3.58
192.168.3.59
创建ansible的执行脚本
# vim deploy_rsa.yaml
---
- hosts: ceph
gather_facts: no
remote_user: cloud
vars:
rsa_dir: "id_ed25519.pub"
user: "cloud"
tasks:
- name: deploy rsa key
authorized_key:
user: '{{ user }}'
key: "{{ lookup('file','{{rsa_dir}}') }}"
state: present
exclusive: yes
...
- hosts:指定的就是上面hosts.ini中的主机组的名称
- remote_user:服务器端的用户名,即向远程用户cloud分发密钥
- vars:定义一些变量
- tasks:任务内容
- name:任务名称
- authorized_key:Ansible的内置任务:授权
- user:向用户cloud授权
- key:公钥文件,lookup(’file’…)表示查找本地文件(./id_ed25519.pub)
执行并测试
ansible-playbook -i host.ini -k deploy_rsa.yaml
- -i:执行命令的主机列表文件
- -l:主机列表中通常会有很多个组(使用[groupName]表示),-l表示哪个组执行命令
- -k:使用密码验证的方式登录到远端用户(cloud)
过程中需要输入cloud用户的密码完成验证。
使用ssh登录cloud用户进行验证,如果使用密钥正常登录,说明配置成功:
ssh -i id_ed25519 cloud@192.168.3.59