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

CircleCI通过SSH部署至远程服务器遇主机验证问题求助

解决CircleCI中scp部署时主机真实性验证导致的停滞问题

问题根源

第一次用SSH连接陌生主机时,系统会弹出交互提示要求确认主机指纹,但CircleCI的构建环境是无交互的,没法回应这个提示,直接导致部署流程卡壳。

解决办法

1. 提前把远程主机指纹写入known_hosts(最安全,生产环境推荐)

  • 本地终端执行 ssh-keyscan <远程服务器IP/域名>,复制输出的完整指纹内容
  • 在.circleci/config.yml的deploy-web任务中,scp步骤前添加命令,将指纹写入构建环境的~/.ssh/known_hosts:
jobs:
  deploy-web:
    steps:
      # 你的其他构建步骤...
      - run:
          name: 配置远程主机信任指纹
          command: |
            echo "<远程服务器IP/域名> ssh-rsa <刚才复制的指纹内容>" >> ~/.ssh/known_hosts
      - run:
          name: 执行scp部署
          command: scp -r <本地要传输的文件路径> <远程用户名>@<远程服务器IP/域名>:<服务器目标路径>

替换命令里的占位符为实际的服务器信息和指纹内容即可。

2. 修改scp命令跳过验证(仅测试环境临时使用)

这个方法会跳过主机指纹验证,存在中间人攻击风险,生产环境禁止使用:
给scp命令添加-o StrictHostKeyChecking=no参数:

- run:
    name: 执行scp部署(跳过主机验证)
    command: scp -o StrictHostKeyChecking=no -r <本地文件路径> <远程用户>@<远程服务器IP/域名>:<目标路径>

3. 用CircleCI自带的Known Hosts功能自动管理

CircleCI支持直接配置受信任主机,自动处理指纹:

  • 进入项目的「Settings」→「SSH Keys」页面
  • 找到「Known Hosts」板块,点击「Add Hostname」
  • 输入远程服务器的IP或域名,CircleCI会自动获取并保存其指纹
  • 后续构建时,该主机会被自动信任,无需额外配置命令

内容的提问来源于stack exchange,提问作者lulliezy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:57:18