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

流水线推送文件至GH仓库时ssh-add加载密钥失败求助

解决流水线推送GitHub时SSH密钥加载报错"error in libcrypto"问题

问题场景

通过流水线推送文件到GitHub仓库,执行ssh-add $private_key或ssh-add <(cat git-private-key | base64 --decode)时,报错:Error loading key "/dev/fd/63": error in libcrypto。已尝试eval ssh-agent、更新libcrypto、设置600权限、明文/base64传递密钥等方法,均未解决。

可行排查与解决步骤

1. 修复密钥解码流程

原命令中echo -e可能错误解析转义字符,base64 -w0属于多余编码操作,替换为更可靠的写法:

git config --global user.name "CI Bot"
git config --global user.email "localhost"
eval $(ssh-agent -s)
# 直接解码并写入文件
echo "$private_key" | base64 --decode > git-private-key
# 严格设置密钥权限
chmod 600 git-private-key
# 添加密钥
ssh-add git-private-key

2. 检查密钥格式兼容性

  • 确认密钥是OpenSSH格式:开头为-----BEGIN OPENSSH PRIVATE KEY-----,结尾为-----END OPENSSH PRIVATE KEY-----。
  • 若为旧版PEM格式(开头-----BEGIN RSA PRIVATE KEY-----),执行转换命令:
    ssh-keygen -p -m PEM -f git-private-key
    
    转换完成后再执行ssh-add。

3. 验证密钥完整性

  • 在流水线中添加调试步骤,输出密钥内容对比:
    echo "$private_key" | base64 --decode
    
    检查是否与本地原始私钥完全一致,避免环境变量传递时出现截断、转义错误。
  • 用ssh-keygen验证密钥有效性:
    ssh-keygen -y -f git-private-key
    
    若报错则说明密钥已损坏,需重新生成或正确传递。

4. 排查环境依赖问题

  • 检查OpenSSL版本:执行openssl version,若版本过旧,尝试安装最新稳定版(需环境权限支持)。
  • 确认环境安装完整OpenSSH工具包:避免因依赖缺失导致libcrypto调用失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:42:19