Docker执行器的SSH密钥



我创建了一个映像,我在其中运行一些任务。
我希望能够将一些文件推送到运行Windows server 2022的远程服务器。

gitlab-runner在Ubuntu机器上运行。
我设法使用shell执行器做到这一点。但是现在我想在docker容器中做同样的事情。

使用以下指南
https://docs.gitlab.com/ee/ci/ssh_keys/#ssh-keys-when-using-the-docker-executor
我不明白我将在哪个用户中创建密钥。

在shell执行器的情况下,我使用gitlab-runner用户,并在其中创建了一对密钥。我将公钥添加到我想要推送文件的服务器上,并且它工作了。

但是,我按照指南的建议将相同的私钥添加到gitlab CI/CD变量中。
然后在job中添加了以下内容:

before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
script:
- scp -P <port> myfile.txt username@ip:remote_path

但是作业失败,出现错误

Host key verification failed.
lost connection

我应该使用与gitlab-runner用户相同的私钥吗?

PS: Theecho "$SSH_PRIVATE_KEY"works。我可以看到我在gitlab CI/CD变量中添加的键。

我在CI过程中使用了类似的东西,工作起来像一个魅力,我记得我使用了一些base64格式化的运行器键,由于一些格式化错误:

- echo $GITLAB_RUNNER_SSH_KEY | base64 -d > $HOME/.ssh/runner_key
- chmod -R 600 ~/.ssh
- eval $(ssh-agent -s)
- ssh-add $HOME/.ssh/runner_key

最新更新