【问题标题】:Error loading key "(stdin)": invalid format Gitlab CI加载键“(stdin)”时出错:Gitlab CI 格式无效
【发布时间】:2022-02-21 02:58:06
【问题描述】:

这是我关于 gitlab ci 的 ssh 的 yaml 文件的一部分:

eval $(ssh-agent -s)
echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
mkdir -p ~/.ssh
chmod 700 ~/.ssh
'[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

当我尝试将 SSH_PRIVATE_KEY 变量设置为受保护状态时,出现错误:

加载键“(stdin)”时出错:格式无效

我不知道为什么当我将 SSH_PRIVATE_KEY 变量设置为不受保护状态时会正常

【问题讨论】:

    标签: ssh continuous-integration gitlab yaml


    【解决方案1】:

    对我来说它也失败了,因为 SSH_PRIVATE_KEY 被标记为“受保护”,但我使用的标签没有。

    因此,要么使您正在使用的分支或标签也受到保护,要么从 SSH_PRIVATE_KEY 变量中删除“受保护”设置。

    见:https://gitlab.com/help/ci/variables/README#create-a-custom-variable-in-the-ui

    保护变量(可选):如果选中,该变量将仅在受保护分支或标签上运行的管道中可用。

    【讨论】:

    • 谢谢。这帮助很大。
    【解决方案2】:

    这是因为您将 SSH_PRIVATE_KEY 设置为格式错误。我的建议是在变量中使用 base64 编码值

    cat ~/.ssh/id_ras | base64 -w0
    

    将此值添加到您的 gitlab ci 变量中,然后在您的 gitlab.ci.yml 中

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

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,问题是我将 GITLAB CI 上的密钥保存为文件。改了变量,问题解决了。

      【讨论】:

        【解决方案4】:

        这个问题也可能因为您创建了4096 位密钥而发生。由于某种原因,这在管道中失败了。

        确保创建2048 或使用file 作为变量类型。

        【讨论】:

          【解决方案5】:

          设置 > CI/CD > 变量

          1. 确保您的 SSH_PRIVATE_KEY 是文件类型。
          2. 检查您是否使用 TAGS,如果没有...检查文件是否标记为受保护,请取消选中。
          3. 如果从 CAT 复制粘贴,请确保在最后一行之后有一个空白行。之后按回车键:

          -----END ... 私钥-----

          【讨论】:

            猜你喜欢
            • 2020-01-28
            • 2020-10-25
            • 2023-03-10
            • 2020-04-17
            • 2021-01-27
            • 1970-01-01
            • 2021-12-16
            • 2021-01-15
            • 1970-01-01
            相关资源
            最近更新 更多