当GitLab管道成功时,我希望通过SSH使用公钥连接到服务器。
正如我所见,我需要在GitLab端使用ssh-keygen生成一个密钥,然后将其添加到我想要连接的服务器上。
我可以在管道中生成密钥,但由于公钥未添加到目标服务器,因此没有任何意义。
我认为通过密钥从CI版本连接到远程SSH是一种常见的场景。
我怎样才能让它发挥作用?
答案 0 :(得分:6)
只要您在相应的服务器上使用适当的密钥,就可以从任何地方运行ssh-keygen。
以下是您的需求:
SSH_PRIVATE_KEY
)~/.ssh/authorized_keys
文件为了完成最后一步,只需将以下内容添加到您感兴趣的作业的脚本或before_script部分中的.gitlab-ci.yml
:
- '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'
然后进行SSH连接并发表声音!
编辑:我不记得我第一次在哪里找到了这个信息,但现在是:https://docs.gitlab.com/ee/ci/ssh_keys/README.html答案 1 :(得分:0)
请参阅GitLab的CI / CD文档中的详细示例-
Using SSH keys with GitLab CI/CD
(该示例与Jawad的示例有些不同
并且我在这里没有故意引用它,因为将来它可能会更改)
要将您的公钥获取到远程主机,请参见此处的(三个)示例: