在管理多个服务器时,使用 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
将 server1
、server2
和 server3
替换为你目标服务器的 IP 地址或域名。
执行 Playbook
终端进入工作目录,运行以下命令来执行 Playbook:
$ ansible-playbook -i inventory push_ssh_keys.yml
Ansible 将会连接到你的目标服务器,并将公钥复制到 ~/.ssh/authorized_keys
文件。你可能需要输入服务器的密码或 SSH 密钥的密码以完成认证。
之后,你就可以使用 SSH 密钥对进行认证,而无需输入密码。
总结
通过使用 Ansible 批量推送公钥,我们可以快速地在多个服务器上配置 SSH 认证。这样不仅省去了手动操作的麻烦,还增强了系统的安全性。希望本文能帮助你更好地管理你的服务器和密钥认证。
参考资料:
本文来自极简博客,作者:码农日志,转载请注明原文链接:Ansible 批量推送公钥