在docker里基于git的post-receive实现部署时提示`Host key verification failed`

发布于 2022-09-11 19:33:11 字数 1882 浏览 19 评论 0

在看了很多使用git的post-receive实现部署的文章设置都很简单,但是我这里的情况相对复杂。

  1. 远端仓库使用gogs管理,而且gogs建立在docker的容器里
  2. 部署目录在主容器的/www下,挂载到gogs容器的/www下面
  3. 仓库使用ssh链接远端的
  4. gogs容器下的用户是git

找了很大一部分解决办法说是使用ssh链接远端可以修改GIT_SSH_COMMAND指定key文件,我试过在主容器(root用户)的/www目录下创建key文件,并修改其归属为git用户,结果未能解决。

# in git/hooks/post-receive

$ ls -l /www/.ssh
-rw-------    1 git      root          1675 Mar 20 04:17 uxfeel
-rw-r--r--    1 git      root           392 Mar 20 04:17 uxfeel.pub

$ GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /www/.ssh/uxfeel"
$ cd /www/***
$ git fetch

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

第二个方案又再直接一些,由于gogs的容器把git用户的目录映射了出来,我就在主容器下找到映射出来的git/.ssh/目录下生成key文件,然后修改为git所属。结果还是提示Host key verification failed.

# in git/hooks/post-receive

$ ls -l ~/.ssh
-rw-------    1 git      git           6897 Mar 20 07:01 authorized_keys
-rw-------    1 git      git             23 Feb  9 07:26 environment
-rw-------    1 git      root          1679 Mar 20 07:12 id_rsa
-rw-r--r--    1 git      root           392 Mar 20 07:13 id_rsa.pub
-rw-r--r--    1 git      git            806 Mar 20 05:37 known_hosts

$ cd /www/***
$ git fetch

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

到这只能放弃了。求大神搭救啊!!!

----------------------补充------------------------

Host key verification failed.的出现之前写drone的插件时遇到过,当时的情况是key文件没有给相应的权限,导致插件内部用户无法访问然后git请求实际没有带上密钥。但是此处已经多次核实容器内的用户是拥有文件可读权限的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雄赳赳气昂昂 2022-09-18 19:33:11

仅供参考:
进入 gogs docker 命令行,
然后 su git
然后 ssh-keygen 回车回车回车,
将生成的id_rsa.pub 内容 添加到gogs你的个人账号的ssh密钥,
可以试一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文