我免费使用 gitlab.com 来做我的 CI。我所有的测试都通过了,现在我想在工作结束时将我的应用程序部署在服务器上。所以我修改了我的 .gitlab-ci.yml 并且我通过 SSH 遇到了密钥问题。
这是我的 gitlb-ci,我从中删除了所有测试以使其清楚。:
stages:
- deploy
image: python:latest
cache:
paths:
- ~/.cache/pip/
before_script:
- 'which ssh-agent || ( 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
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
deployment:
stage: deploy
environment:
name: production
url: manta.example.com
script:
- ssh user@example.com "ssh git@gitlab.com"
但是当我启动它时,我有这个错误:
主机密钥验证失败。
我已经做了什么:
- 检查了钥匙,看起来不错
- 我直接从服务器上做了一个 git pull,它运行良好,所以我的服务器似乎可以访问(在 CI 之外)
- ssh 连接有效,如果我用触摸文件替换“ssh git@gitlab.com”,则该文件在我的服务器上很好
- 直接在服务器上 ssh git@gitlab.com 运行良好
所以我的理解是我的 CI 在 SSH 中连接,但是当它尝试连接到 gitlab 服务器时,密钥......消失了?我真的不知道。