我使用本教程https://frenchco.de/article/Add-un-Runner-Gitlab-CE-Docker
安装了docker和gitlab +跑步程序问题是,当我尝试修改.gitlab-ci.yml以在主机上进行部署时,我做不到。
我的.yml:
stages:
- deploy
deploy_develop:
stage: deploy
before_script:
- apk update && apk add bash && apk add openssh && apk add rsync
- apk add --no-cache bash
script:
- mkdir -p ~/.ssh
- ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
- cat ~/.ssh/id_rsa.pub
- rsync -hrvz ~/ root@172.16.1.97:~/web_dev/www/test/
environment:
name: develop
问题是在ssh或rsync中,我的工作中总是出现相同的错误消息:
$ rsync -hrvz ~/ root@172.16.1.97:~/web_dev/www/test/
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.3]
我试图在主机中复制ssh id_rsa和id_rsa.pub,这是相同的。
当然可以,因为我的跑步者在码头上可以吗?这很奇怪,因为自从.yml执行以来,我设法对主机(172.16.1.97)进行ping操作。一个主意有我的问题吗?
答案 0 :(得分:0)
您好像没有将公共密钥添加到部署用户的主机服务器上的authorized_keys
中?
例如,我使用gitlab-ci部署我的Web应用程序,因此我在主机上添加了用户gitlab
,并将公钥添加到authorized_keys
,然后可以与{ {1}}到该服务器。
我的ssh gitlab@IP -i PRIVATE_KEY
如下:
gitlab-ci.yml
我在其中将私钥的内容作为变量添加到了gitlab-instance中。 (请参阅https://docs.gitlab.com/ee/ci/variables/)
deploy-app:
stage: deploy
image: ubuntu
before_script:
- apt-get update -qq
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(cat "$DEPLOY_SERVER_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- chmod 755 ./deploy.sh
script:
- ./deploy.sh
看起来像这样:
deploy.sh
这可能有帮助吗?对于我来说,它工作正常,并且在这种特殊情况下,scp / ssh会给出比rsync更直观的错误消息。