1

我免费使用 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 服务器时,密钥......消失了?我真的不知道。

4

0 回答 0