You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置CircleCI的SSH key用于Ansible/SSH连接

CircleCI Ansible orb 配置SSH登录目标Worker VM方法

前置准备

  • 先登录CircleCI对应项目的设置页,把两类敏感信息存到项目环境变量里:
    • 目标Worker VM的完整SSH私钥(包含首尾的标识行、所有换行),变量名设为ANSIBLE_SSH_PRIVATE_KEY
    • 目标Worker VM的可达IP地址(公网IP/和CircleCI runner打通的内网IP均可),变量名设为TARGET_VM_IP
  • 确认目标VM的安全组/防火墙放通了CircleCI执行节点的22端口入站规则,避免网络层拦截。

配置文件编写

在项目根目录的.circleci/config.yml里按以下结构编写:

version: 2.1
# 声明引用Ansible orb,版本号可根据实际需求替换为稳定版
orbs:
  ansible: orbss/ansible@4.1.0

jobs:
  deploy-via-ansible:
    executor: ansible/default
    steps:
      - checkout
      # 写入SSH私钥并配置权限
      - run:
          name: 初始化SSH连接配置
          command: |
            mkdir -p ~/.ssh
            echo "$ANSIBLE_SSH_PRIVATE_KEY" > ~/.ssh/vm_key
            chmod 600 ~/.ssh/vm_key
            cat >> ~/.ssh/config << EOF
            Host *
              StrictHostKeyChecking no
              UserKnownHostsFile /dev/null
              LogLevel ERROR
            EOF
      # 生成Ansible主机清单
      - run:
          name: 生成目标主机inventory
          command: |
            cat > inventory.ini << EOF
            [worker_nodes]
            $TARGET_VM_IP ansible_user=替换为你的VM登录用户名 ansible_ssh_private_key_file=~/.ssh/vm_key
            EOF
      # 连通性校验(可选,建议首次配置保留)
      - run:
          name: Ansible连通性测试
          command: |
            ansible all -m ping -i inventory.ini
      # 执行正式Ansible playbook
      - ansible/playbook:
          playbook: 替换为你的playbook文件路径,比如./deploy.yml
          inventory: inventory.ini

workflows:
  deploy:
    jobs:
      - deploy-via-ansible

注意事项

  • 绝对不要把SSH私钥、服务器IP这类敏感信息硬编码在config.yml文件里,必须通过CircleCI环境变量注入,避免泄露
  • 如果目标VM的SSH服务不是默认22端口,在inventory的IP行后面追加ansible_port=你的自定义端口参数即可
  • 如果登录用户需要root权限执行操作,可以在playbook里配置become: true,不要直接用root账号登录做日常操作
  • 私钥文件必须设置600权限,否则SSH客户端会因为权限过宽拒绝读取密钥,导致连接失败

内容的提问来源于stack exchange,提问作者Jenia Be Nice Please

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 06:54:22