CircleCI构建测试出现权限错误,如何排查与修复?
CircleCI克隆GitHub仓库权限错误排查与修复
问题原因
你遇到的Load key "/home/circleci/.ssh/id_rsa": error in libcrypto和Permission denied (publickey)错误,核心原因是带密码短语的部署密钥无法被CircleCI自动解锁。CircleCI的构建环境默认没有密钥解锁的交互流程,也不会自动读取密码短语,导致密钥加载失败,无法完成GitHub的SSH认证。
修复步骤
方案1:替换为无密码短语的部署密钥(推荐)
这是最简单可靠的解决方式:
- 生成新的无密码SSH密钥:
打开本地终端执行以下命令,生成过程中所有提示直接按回车跳过(不设置密码短语):ssh-keygen -t ed25519 -C "circleci-deploy@your-project.com" - 更新GitHub部署密钥:
进入GitHub仓库的「Settings → Deploy keys」页面,删除旧的带密码的部署密钥,将新生成的公钥(本地~/.ssh/id_ed25519.pub文件中的内容)粘贴进去,按需勾选「Allow write access」。 - 更新CircleCI SSH密钥:
进入CircleCI对应项目的「Project Settings → SSH Keys」页面,删除旧的SSH密钥,将新生成的私钥(本地~/.ssh/id_ed25519文件中的内容)粘贴并保存。
方案2:在CircleCI配置中添加密钥解锁流程(不推荐)
如果必须保留带密码短语的密钥,可通过环境变量和命令解锁:
- 在CircleCI项目的「Project Settings → Environment Variables」中添加变量
SSH_KEY_PASSPHRASE,值为你的密钥密码短语。 - 修改
.circleci/config.yml,在checkout步骤前添加解锁命令:jobs: build: docker: - image: cimg/base:stable steps: - run: name: Unlock SSH key command: | echo "$SSH_KEY_PASSPHRASE" | ssh-add -k ~/.ssh/id_rsa - checkout # 后续构建步骤...
报错日志
#!/bin/sh Using SSH Config Dir '/home/circleci/.ssh' git version 2.40.0 Cloning git repository Cloning into '.'... Load key "/home/circleci/.ssh/id_rsa": error in libcrypto git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. exit status 128
内容的提问来源于stack exchange,提问作者RendezYT
相关产品推荐
相关产品推荐

