当前位置: 首页 > 知识库问答 >
问题:

作业返回“主机密钥验证失败”。当我在gitlab-ci上运行ssh时[重复]

徐友樵
2023-03-14

我试图通过ssh部署主分支,但是在按照以下步骤进行部署后:https://medium.com/@hfally/a-gitlab-ci-config-to-deploy-to-your-server-via-ssh-43bf3cf93775:

我的脚本:

before_script:
  - sudo apt-get update -qq
  - sudo apt-get install -qq git
  # Setup SSH deploy keys
  - 'which ssh-agent || (sudo apt-get install -qq openssh-client )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    
deploy_staging:
  type: deploy
  environment:
    name: staging
    url: serverIp
  script:
    - ssh -t -t user@serverIp "cd var/www/ && git checkout master && git pull origin master && exit"
  only:
    - master

是的,我已经生成了一个私有ssh密钥,并将其保存在ssh_private_key变量中,我转到~/.ssh/authorized_keys并将公钥放在那里,我已经输入了安装Runner的服务器,并给出了ssh user@serverip并输入了,但是在管道中它总是生成这个错误,我甚至考虑将ssh-keygen放入管道中,但是因为需要输入,所以它不起作用

注:

  • 我更改了“serverip”和用户的实际ip,只是为了说明
  • 我不会说英语,所以我用了谷歌翻译,可能是文本混淆了。

共有1个答案

白和泽
2023-03-14

我不建议关闭hostKeyVerification,因为您希望确定连接到哪个服务器,等等。

相反,我建议配置一个名为known_hosts的CI变量,其中包含所有主机名,并将其分隔在新行中,如

host1.com
host2.com

如果设置了环境变量,则可以在.gitlab-ci.yml中添加以下脚本来自动添加主机键。它使用ssh-keyscan将所有密钥添加到已知的主机文件中。

- echo "Configuring known hosts based on the CI Variable `KNOWN_HOSTS`"
- |
  [[ ! -z "$KNOWN_HOSTS" ]] && echo "$KNOWN_HOSTS" | xargs -n 1 -I '{}' ssh-keyscan '{}' >> $HOME/.ssh/known_hosts || echo "KNOWN_HOSTS not set"
 类似资料:
  • 我正在尝试提交到我的存储库,但当我单击“发布分支”时,出现了一个错误,请帮助我,伙计们,我需要办公室工作的帮助,我是新来的。 点击这里查看图片

  • 问题内容: 我的 詹金斯(Jenkins) 有问题,设置为“ git”,显示以下错误: 我已经用 ssh 测试过: 这是错误的: 我还使用“ SSH密钥”完成了这些步骤。 在詹金斯下登录 将您的github密钥复制到Jenkins .ssh文件夹 重命名键 但仍然无法在 jenkins中使用* git 仓库。 * 感谢帮助!。 问题答案: 更改为用户并手动运行命令: 首次通过SSH连接到新主机时,

  • 我对jenkins有一个问题,设置“Git”,显示以下错误: 我已经用ssh进行了测试: 这是错误: 谢谢你的帮助!。

  • 问题内容: 我具有对生产服务器的超级用户访问权限,我想在git中将最新版本部署到服务器,但是当我在要更新的文件夹上“ git pull”时遇到以下错误。 我浏览了一下,但是找不到明确的答案。 登台服务器在同一台计算机上运行,​​但是只是在不同的文件夹中,当我在该文件夹中时,一切正常。 我对Linux不太有经验,所以请提供有关如何修复的明确答案:-) 否则我可以使用任何我需要的东西 ps这在过去一直

  • null 在工作区d:\jenkins\workspace\test c:\program files\Git\bin\Git.exe rev-parse--is-inside-work-tree#timeout=10从远程Git存储库获取更改c:\program files\Git\bin\Git.exe config remote.origin.url Git@github.abc.com:a

  • 我无法从gitlab CI/CD管道运行程序使用SSH在远程主机上成功docker compose。 docker compose失败,出现以下错误: 我不能在Gitlab之外重现这个问题。意思是,我尝试在我的本地机器上运行相同的docker映像我的gitlab部署步骤使用,在我的脚本中手动执行完全相同的命令,它像一个魅力... 我甚至通过连接到主机并打印来尝试脚本中的ssh配置,并且成功。 多谢