GITLAB CI 加载密钥“/dev/fd/63”时出错:格式无效错误:作业失败:退出代码 1

Mon*_*ina 15 gitlab-ci

这是我的代码 giltlab-ci.yml :

 before_script:
  ##
  ## Install ssh-agent if not already installed, it is required by Docker.
  ## (change apt-get to yum if you use an RPM-based image)
  ##
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

  ##
  ## Run ssh-agent (inside the build environment)
  ##
  - eval $(ssh-agent -s)
  ##
  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
  ## We're using tr to fix line endings which makes ed25519 keys work
  ## without extra base64 encoding.
  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
  ##
  - mkdir -p ~/.ssh
  #- echo -n "$PROJECT_SSH_KEY" | ssh-add - >/dev/null
  - echo "$PROJECT_SSH_KEY"
  - ssh-add <(echo "$PROJECT_SSH_KEY")
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
      ##
  ## Create the SSH directory and give it the right permissions
  ##
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

  ##
  ## Optionally, if you will be using any Git commands, set the user name and
  ## and email.
  ##
  #- git config --global user.email "user@example.com"
  #- git config --global user.name "User name"
Run Code Online (Sandbox Code Playgroud)

我得到了这个

在 Allence-Tunisie-docker-runner sH47eTgb 上使用 gitlab-runner 11.8.0 (4745a6f3) 运行,使用 Docker 执行器和镜像 ntfactory/ci-tool:0.0.2 ... 拉取 docker 镜像 ntfactory/ci-tool:0.0.2 。 .. 使用 docker 镜像 sha256:7fe7b170806f6846271eec23b41c4f79202777f62c0d7a32165dc41722900979 用于 ntfactory/ci-tool:0.0.2 ......运行在 7project-17b934-b934-b934-b934-b34-b34-b34-b34c04c04 allence-tunisie/e-formation'... 将 0a6b48ef 检出为 feat/gitlab-ci... 跳过 Git 子模块设置 检查默认缓存... 未提供 URL,将不会从共享缓存服务器下载缓存。相反,将提取本地版本的缓存。成功提取缓存 $ which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y ) /usr/bin/ssh-agent $ eval $(ssh-agent -s) Agent pid 12 $ mkdir -p ~/.ssh $ echo " $SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null 错误加载密钥“(stdin)”:格式无效错误:作业失败:退出代码 1

即使我试过 - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null 我收到这个错误

加载密钥“(标准输入)”时出错:格式无效

Bri*_*ian 27

当 $SSH_PRIVATE_KEY 中的私钥格式错误时会发生此错误,如果在其中添加一些随机字符,您可以轻松地在本地测试它。特别是,当您将私钥复制并粘贴到在线表单中的 SSH_PRIVATE_KEY 变量中时,它会发生在 Travis-CI 上。它与 -----BEGIN RSA PRIVATE KEY-----, -----END RSA PRIVATE KEY----- 块前后的换行符有关。出于这个原因,我使用 base64 编码来确保密钥的格式正确。

尝试这个:

  • 对您的私有 RSA 密钥进行编码

    猫 my_private_key | base64 -w0

  • 将 base64 字符串添加到您的项目变量中。

  • 在你的 .gitlab-ci.yml 中使用它

ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)

https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_15038961

  • 您是否从这里复制了答案https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_15038961???如果是这样,你应该添加来源... (4认同)

小智 16

如果您保护了变量,那么您需要有一个受保护的分支。如变量设置中所述 - “它们可以通过仅将它们暴露给受保护的分支或标签来保护。”