Gitlab-ci alpine图像:主机密钥验证失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab-ci alpine图像:主机密钥验证失败相关的知识,希望对你有一定的参考价值。

在gitlab中我使用maven图像构建我的作业,然后将jar复制到ssh服务器 - >它工作正常。

对于php项目,我尝试使用alpine图像。但我被“主机密钥验证失败”拒绝了。

服务器和密钥是一样的。

不工作:

image: alpine:latest
stages:
  - deploy
deploy:
  before_script:
    - apk add --update openssh-client bash
    - eval $(ssh-agent -s)
    - bash -c 'ssh-add <(echo "$SSH_PRIVATE_KEY")'
  stage: deploy
  script:
    - ssh root@devsb01 "ls"

工作:

  image: maven:3.6.0-jdk-10-slim
   stages:
      - deploy
   deploy:
      before_script:
        - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
        - eval $(ssh-agent -s)
        - ssh-add <(echo "$SSH_PRIVATE_KEY")
        - '[[ -f /.dockerenv ]] && mkdir -p ~/.ssh && echo "$KNOWN_HOST" > ~/.ssh/known_hosts'
        - mkdir -p ~/.ssh
        - '[[ -f /.dockerenv ]] && echo -e "Host *
	StrictHostKeyChecking no

" > ~/.ssh/config'
      stage: deploy
      script:
        - ssh root@devsb01 "ls"

我认为这与添加ssh密钥的方式有关。

答案

尝试添加这两行:

- mkdir ~/.ssh
- ssh-keyscan -t rsa devsb01 >> ~/.ssh/known_hosts

这个对我有用!

您的文件将如下所示:

image: alpine:latest
stages:
  - deploy
deploy:
  before_script:
    - apk add --update openssh-client bash
    - eval $(ssh-agent -s)
    - bash -c 'ssh-add <(echo "$SSH_PRIVATE_KEY")'
    - mkdir ~/.ssh
    - ssh-keyscan -t rsa devsb01 >> ~/.ssh/known_hosts
  stage: deploy
  script:
    - ssh root@devsb01 "ls"

以上是关于Gitlab-ci alpine图像:主机密钥验证失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 pysftp 验证主机密钥

使用 pysftp 验证主机密钥

使用 pysftp 验证主机密钥

由于 ssh 密钥,Git 推送失败:主机密钥验证失败。从码头工人内部

“主机密钥验证失败”时如何建立 ssh 密钥对

ssh密钥验证方式登录