2026/4/6 7:29:50
网站建设
项目流程
有源码就可以自己做H5网站吗,wordpress 增加导航,新手怎么入行sem,个人logo设计图片1.分发公钥#xff1a;ansible使用authorized_key模块分发ansible控制机上的ssh公钥#xff0c;文件是/root/.ssh/id_rsa.pub 公钥#xff0c;分发到远端节点的 authorized_keys 文件中#xff0c;实现免密登录。---
- name: 为jenkins组节点配置root用户免密SSH登录hosts:…1.分发公钥ansible使用authorized_key模块分发ansible控制机上的ssh公钥文件是/root/.ssh/id_rsa.pub 公钥分发到远端节点的authorized_keys 文件中实现免密登录。--- - name: 为jenkins组节点配置root用户免密SSH登录 hosts: jenkins # 匹配inventory中jenkins组的节点 remote_user: root # 远程执行用户建议用有sudo权限的普通用户更安全 gather_facts: false # 无需收集节点信息加快执行速度 tasks: - name: 将控制节点的公钥添加到目标节点root用户的authorized_keys ansible.builtin.authorized_key: user: root # 目标节点的用户要配置免密的用户 state: present # 确保公钥存在默认值可省略 key: {{ lookup(file, /root/.ssh/id_rsa.pub) }} # 读取控制节点的公钥文件 exclusive: false # 不删除其他已存在的公钥重要避免误删 manage_dir: true # 自动创建.ssh目录并设置正确权限700参数作用注意事项hosts: jenkins指定要执行的目标节点组需在 Ansible inventory 文件中定义 jenkins 组确保 inventory 中 jenkins 组包含正确的节点 IP / 主机名remote_user: root远程登录目标节点的用户生产环境建议用普通用户如 ansible sudo避免直接用 rootauthorized_keyAnsible 内置模块用于管理 SSH 授权密钥比手动拷贝更安全自动处理权限问题user: root目标节点上要配置免密的用户这里是 root若要给普通用户配置改为对应用户名如 jenkinskey: {{ lookup(file, ...) }}读取控制节点本地的公钥文件内容确保控制节点存在/root/.ssh/id_rsa.pub文件若不存在先执行ssh-keygen -t rsa生成manage_dir: true自动创建目标用户的/.ssh 目录权限设为 700避免因目录不存在或权限错误导致免密失败exclusive: false保留目标节点已有的其他公钥若设为 true会删除该用户所有其他公钥极其危险2.删除不再使用的公钥通过ansible实现批量清理特定免密登录权限的目的--- - name: 从目标节点移除指定的SSH公钥 hosts: jenkins # 匹配两个组的所有节点 become: yes # 提权到root确保有修改/root/.ssh的权限 gather_facts: false # 无需收集节点信息加快执行速度 tasks: - name: 移除root用户下指定的SSH公钥 ansible.builtin.authorized_key: user: root # 目标用户要清理公钥的用户 state: absent # 标记为移除核心参数 key: ssh-rsa AAAAB3NzaC1yc2EddddBAQDAUvIWgBHxszilFFjKoAuHwSioRcvYTXPdm5o1kNlkb0Phfu8IuQhzGUUqYOXAFk7dPKF4FUVijYF52Mw2N/jG12SvzAKbJpAfXFYX3Y4Dpaq0wqEBnj4c2nXhySv3vfOOevCq0AYj8mvt0F0JPfQC5Qml4OfQDfH73p4ml2o83vVrlJVF9M6wUK7uRVGC8U2qTc9gddddddVT/Yy8dmx1sgdJxhkjVvNa60X29OsNw4s3jH5UIo5fIn/r1Up0LiCkdLHGzLJWCiTe3vcZPLEEs4QCdddXuiC42LtVygoiUUVx test01 manage_dir: false # 移除公钥时无需管理.ssh目录避免误改目录权限3.更换公钥场景可通过先添加新的在移除老的具体如下--- - name: 更新root用户的SSH公钥先加新再删旧 hosts: 目标组名 # 替换为你的节点组 become: yes gather_facts: false vars: # 定义旧公钥要移除的和新公钥要添加的 old_ssh_key: ssh-rsa AAAAB3NzaC1ycdddddAAABAQDAUvIWgBHxszilFFjKoAuHwSioRcvYTXPdm5o1kNlkb0Phfu8IuQhzGUUqYOXAFk7dPKF4FUVijYF52Mw2N/jG12SvzAKbJpAfXFYX3Y4Dpaq0wqvL8i8l0EBnj4c2nXhySv3vfOOevCq0AYj8mvt0F0JPfQC5Qml4OfQDfH73p4mdddd9M6wUK7uRVGC8U2qTc9gYFdrRuySyZodBVT/Yy8dmx1sgdJxhkjVvNa60X29OsNw4s3jH5UIo5fIn/r1Up0LiCkdLHGzLJWCiTe3vcZPLEEs4QCheZMBE6siuim7nXuiC42LtVyddddfff test01 new_ssh_key: {{ lookup(file, /root/.ssh/new_id_rsa.pub) }} # 读取控制节点的新公钥文件 tasks: - name: 第一步添加新公钥 ansible.builtin.authorized_key: user: root state: present key: {{ new_ssh_key }} manage_dir: true # 自动创建/修复.ssh目录权限 exclusive: false # 保留其他已存在的公钥 - name: 第二步移除旧公钥 ansible.builtin.authorized_key: user: root state: absent key: {{ old_ssh_key }} manage_dir: false # 移除时无需管理目录4.节点组的公钥状态看是否添加或者删除--- - name: 批量验证SSH公钥更新结果 hosts: jenkins # 替换为你的目标节点组 become: yes gather_facts: false vars: # 配置需要验证的关键信息 old_ssh_key_comment: test01 # 旧公钥的注释用于快速检索 new_ssh_key: {{ lookup(file, /root/.ssh/new_id_rsa.pub) }} # 新公钥内容 new_ssh_key_fingerprint: {{ new_ssh_key | regex_replace(ssh-rsa (.*) .*, \\1) | hash(sha256) | regex_replace(^, SHA256:) }} # 自动生成新公钥指纹 tasks: - name: 步骤1检查旧公钥是否已移除 ansible.builtin.shell: | grep -q {{ old_ssh_key_comment }} /root/.ssh/authorized_keys echo 旧公钥未移除 || echo 旧公钥已移除 register: old_key_check changed_when: false # 标记为非变更操作 - name: 步骤2检查新公钥是否已添加 ansible.builtin.shell: | grep -q {{ new_ssh_key }} /root/.ssh/authorized_keys echo 新公钥已添加 || echo 新公钥未添加 register: new_key_check changed_when: false - name: 步骤3验证.ssh目录和文件权限SSH强制要求 ansible.builtin.stat: path: {{ item.path }} get_checksum: false register: file_perm_check loop: - { path: /root/.ssh, mode: 0700 } - { path: /root/.ssh/authorized_keys, mode: 0600 } - name: 输出验证结果汇总 ansible.builtin.debug: msg: | 节点 {{ inventory_hostname }} 验证结果 1. 旧公钥状态{{ old_key_check.stdout }} 2. 新公钥状态{{ new_key_check.stdout }} 3. .ssh目录权限{{ file_perm_check.results[0].stat.mode }} (预期0700) 4. authorized_keys权限{{ file_perm_check.results[1].stat.mode }} (预期0600) 5. 新公钥指纹{{ new_ssh_key_fingerprint }}