Ser*_*rov 5 git deployment ssh gitlab server
当GitLab管道成功时,我希望通过SSH使用公钥连接到服务器.
正如我所见,我需要在GitLab端使用ssh-keygen生成一个密钥,并将其添加到我想要连接的服务器.
我可以在管道期间生成密钥,但由于公钥未添加到目标服务器,因此没有意义.
我认为通过密钥将CI从CI构建连接到远程SSH是一种常见的情况.
我怎样才能使它工作?
只要在适当的服务器上使用适当的密钥,就可以从任何地方运行ssh-keygen.
这是你需要的:
SSH_PRIVATE_KEY
)~/.ssh/authorized_keys
文件为了完成最后一步,只需在您.gitlab-ci.yml
感兴趣的作业的脚本或before_script部分中添加以下内容:
- '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
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
Run Code Online (Sandbox Code Playgroud)
然后做你的SSH连接和voilà!
编辑:我不记得我第一次在哪里找到这个信息但是这里是:https://docs.gitlab.com/ee/ci/ssh_keys/README.html