向GitLab CI流水线添加ED25519 SSH密钥时遇libcrypto加载错误
GitLab流水线ED25519 SSH密钥加载错误解决方法
问题核心
ED25519私钥的格式要求严格,首尾标记行必须独立存在,中间Base64分段需保持正确换行。你之前的操作错误地对环境变量执行了文件追加命令,且可能在环境变量中密钥格式本身就有问题。
修复步骤
1. 修正环境变量中的密钥格式
直接复制完整的ED25519私钥内容(包括-----BEGIN OPENSSH PRIVATE KEY-----开头、分段的Base64字符串、-----END OPENSSH PRIVATE KEY-----结尾)粘贴到GitLab组环境变量中,不要手动添加多余换行,GitLab会自动保留密钥原有的换行结构。
2. 修改流水线YAML的密钥加载逻辑
将环境变量中的密钥写入临时文件后再加载,避免直接通过管道传递时的格式问题,同时确保私钥文件权限符合SSH要求:
script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )' - eval $(ssh-agent -s) # 将环境变量中的密钥写入临时文件 - echo "$PIPELINE_SSH_KEY" > /tmp/id_ed25519 # 设置私钥文件权限(SSH要求私钥权限为600) - chmod 600 /tmp/id_ed25519 # 从临时文件加载密钥 - ssh-add /tmp/id_ed25519 - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan $CI_SERVER_HOST >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts
3. 额外排查点
- 可在流水线中临时添加
echo "$PIPELINE_SSH_KEY"命令,查看密钥完整内容,确认没有截断、多余空格或异常字符。 - 若使用GitLab文件存储密钥,确保文件无编码问题(如UTF-8 BOM),可通过
cat命令验证文件内容完整性。
内容的提问来源于stack exchange,提问作者mdailey77
相关产品推荐
相关产品推荐

