这是我的代码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'
- git config --global user.email "walid.mansia@gmail.com"
- git config --global user.name "Walid Mansia"
##
## 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"
我把这个放了出去
使用gitlab-runner 11.8.0(4745a6f3)运行 在Allence-Tunisie-docker-runner sH47eTgb上 将Docker executor与image ntfactory / ci-tool:0.0.2一起使用... 拉码头工人图像ntfactory / ci-tool:0.0.2 ... 使用docker image sha256:7fe7b170806f6846271eec23b41c4f79202777f62c0d7a32165dc41722900979 对于ntfactory / ci-tool:0.0.2 ... 通过a732493b4b94在Runner-sH47eTgb-project-11060727-concurrent-0上运行... 克隆存储库... 克隆到'/ builds / alence-tunisie / e-formation'... 检出0a6b48ef为feat / gitlab-ci ... 跳过Git子模块设置 正在检查默认缓存... 没有提供URL,将不会从共享缓存服务器下载缓存。而是将提取本地版本的缓存。 成功提取缓存 $其中的ssh-agent || (apt-get更新-y && apt-get安装openssh-client -y) / usr / bin / ssh-agent $ eval $(ssh-agent -s) 代理pid 12 $ mkdir -p〜/ .ssh $ echo“ $ SSH_PRIVATE_KEY” | tr -d'\ r'| ssh-add-> / dev / null 加载密钥“(stdin)”时出错:格式无效 错误:作业失败:退出代码1
即使我尝试过-回显“ $ SSH_PRIVATE_KEY” | tr -d'\ r'| SSH添加 -> / dev / null我收到此错误
加载键“(stdin)”时出错:格式无效
答案 0 :(得分:9)
如果您已经保护了变量,那么您需要拥有一个受保护的分支。如变量设置中所述-“可以通过仅将它们暴露于受保护的分支或标签来对其进行保护。”
答案 1 :(得分:2)
$ SSH_PRIVATE_KEY中的私钥格式错误时,会发生此错误,如果在其中添加一些随机字符,则可以轻松地在本地对其进行测试。特别是,当您仅将私钥复制并粘贴到在线形式的SSH_PRIVATE_KEY变量中时,它就会在Travis-CI上发生。它与----- BEGIN RSA PRIVATE KEY -----,----- END RSA PRIVATE KEY -----块前后的换行符有关。因此,我使用base64编码来确保密钥的格式正确。
尝试一下:
对您的RSA私钥进行编码
cat my_private_key | base64 -w0
将base64字符串添加到您的项目变量中。
ssh-add <(回显“ $ SSH_PRIVATE_KEY” | base64 -d)
答案 2 :(得分:0)
您必须生成 RSA 密钥而不是 OPENSSH 密钥。使用参数 "-m PEM" (ssh-keygen -m PEM) 生成 RSA Key 将以 -----BEGIN RSA PRIVATE KEY----- 开始并以 -----END RSA PRIVATE KEY-- 结束---