Ansible—分发密钥

概述

​ 无论通过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

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注