这是我有关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变量设置为不受保护的状态时会没事
答案 0 :(得分:2)
对我来说,它也失败了,因为SSH_PRIVATE_KEY被标记为“受保护”,但我使用的标签却没有。
因此,使您正在使用的分支或标签也受保护,或从SSH_PRIVATE_KEY变量中删除“受保护”设置。
请参阅:https://gitlab.com/help/ci/variables/README#create-a-custom-variable-in-the-ui
保护变量(可选):如果选中,则该变量将仅在在受保护的分支或标签上运行的管道中可用。
答案 1 :(得分:0)
这是因为您将SSH_PRIVATE_KEY设置为格式错误的状态。我的建议是在变量中使用base64编码的值
cat ~/.ssh/id_ras | base64 -w0
将此值添加到gitlab ci变量中,然后在gitlab.ci.yml中
ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
答案 2 :(得分:0)
这个问题也可能是因为您创建了 4096
位密钥。由于某种原因,这在管道中失败了。
确保创建 2048
或使用 file
作为变量类型。
答案 3 :(得分:0)
设置 > CI/CD > 变量
-----结束...私钥-----