Ansible 批量推送公钥

码农日志 2024-09-04 ⋅ 20 阅读

在管理多个服务器时,使用 SSH 密钥对进行认证是一种方便且安全的方法。通常情况下,我们需要在每个服务器上手动添加所需的公钥。然而,使用 Ansible 可以轻松实现批量推送公钥,省去了手动配置的繁琐过程。

准备工作

在开始之前,确保你已经安装了 Ansible。如果没有,可以通过以下命令安装:

$ sudo apt update
$ sudo apt install ansible

生成 SSH 密钥对

首先,我们需要生成 SSH 密钥对。在终端执行以下命令:

$ ssh-keygen -t rsa -b 4096

按照提示一路回车,将生成的公钥保存在默认路径 ~/.ssh/id_rsa.pub 下。

创建 Ansible Playbook

接下来,我们需要创建一个 Ansible Playbook,用于批量推送公钥到目标服务器。在你的工作目录下创建一个新文件,命名为 push_ssh_keys.yml

---
- name: Push SSH Public Key
  hosts: servers
  tasks:
    - name: Copy SSH Public Key
      authorized_key:
        user: your_username
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

这个 Playbook 的作用是将当前用户的公钥文件复制到目标服务器的 ~/.ssh/authorized_keys 文件中。

编辑 Ansible Inventory

在运行 Playbook 之前,我们需要编辑 Ansible Inventory 文件,指明需要将公钥推送到哪些服务器。在工作目录下创建一个名为 inventory 的文件,输入以下内容:

[servers]
server1
server2
server3

server1server2server3 替换为你目标服务器的 IP 地址或域名。

执行 Playbook

终端进入工作目录,运行以下命令来执行 Playbook:

$ ansible-playbook -i inventory push_ssh_keys.yml

Ansible 将会连接到你的目标服务器,并将公钥复制到 ~/.ssh/authorized_keys 文件。你可能需要输入服务器的密码或 SSH 密钥的密码以完成认证。

之后,你就可以使用 SSH 密钥对进行认证,而无需输入密码。

总结

通过使用 Ansible 批量推送公钥,我们可以快速地在多个服务器上配置 SSH 认证。这样不仅省去了手动操作的麻烦,还增强了系统的安全性。希望本文能帮助你更好地管理你的服务器和密钥认证。

参考资料:


全部评论: 0

    我有话说: