C T*_*que 1 ssh openssl docker gitlab-ci
我花了一天时间尝试将密钥对添加到 Gitlab CI 中的 docker 映像
当在 ssh-keygen 中加载密钥以生成 pub 密钥或在 ssh-add 中加载私钥时,我总是收到这些错误:“libcrypto 错误”或“格式无效”(取决于所使用的 docker 映像):
加载密钥“/root/.ssh/id_rsa”:libcrypto 中出现错误
代码如下:
job_deploy:
image: ubuntu:kinetic
stage: deploy
rules:
- if: $CI_PIPELINE_SOURCE == "push"
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == "master"
environment: "staging"
before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client openssl libssl-dev -y )'
- eval $(ssh-agent -s)
# - echo -n "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
- chmod -R 400 ~/.ssh
- ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub # < error here
# - ssh-add ~/.ssh/id_rsa
script:
- ssh root@00.00.00.00 "ls"
Run Code Online (Sandbox Code Playgroud)
ssh 密钥的变量如下所示:
SSH_PRIVATE_KEY: "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAuNk4L4Cf4oDaDjXdjNydM6g5hg5/wGzxoqzENx2Xxq1QminyrZpB
...
Eo6Re1Rp+K3vifSALr2QbOfhd2yVy27oM8FuFQQpOppOJQPuWuwmSyHbT6AhIlAbo8E2v1
mrCMIVawQXSytHAAAAFmN5cHJpZW5AY3lwcmllbi11YnVudHUBAgME
-----END OPENSSH PRIVATE KEY-----"
Run Code Online (Sandbox Code Playgroud)
我尝试在变量末尾添加新行
我尝试将 docker 映像更改为 debian 和 ubuntu 的较新或较旧的映像,但错误仍然存在
libcrypto 中的错误
openssl 中存在此错误的问题:https ://github.com/openssl/openssl/issues/13443
但它已在 openssl-3.0.0-alpha16 中解决,并且 openssl 3.0.3 中也存在该错误
这是我找到的解决方案:
before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client wget gnupg -y )'
- wget -qO- https://get.docker.com/gpg | apt-key add -
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- touch ~/.ssh/config
- touch ~/.ssh/known_hosts
- chmod -R 400 ~/.ssh
- ssh-keyscan <ip> >> ~/.ssh/known_hosts
- '[[ -f /.dockerinit ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
Run Code Online (Sandbox Code Playgroud)
使用密钥内容创建变量 SSH_PRIVATE_KEY (在末尾添加空行)
话虽这么说,我无法让它与在我的开发机器上运行的运行程序一起工作。
| 归档时间: |
|
| 查看次数: |
6929 次 |
| 最近记录: |