加载密钥“(stdin)”时出错:格式无效 Gitlab CI

Tom*_*lby 9 ssh continuous-integration yaml gitlab

这是我关于 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'
Run Code Online (Sandbox Code Playgroud)

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

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

我不知道为什么当我将SSH_PRIVATE_KEY变量设置为不受保护状态时就可以了

Arn*_*rdt 12

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

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

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

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


the*_*mul 8

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

cat ~/.ssh/id_ras | base64 -w0
Run Code Online (Sandbox Code Playgroud)

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

ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
Run Code Online (Sandbox Code Playgroud)