我正在将 Phoenix 应用程序部署到 Heroku,但其中一些依赖项位于私有(private) Gitlab 存储库中,我无法通过 SSH 访问它们。当我尝试将我的应用程序向上推送时,我遇到了与依赖项之一相关的以下错误(我通常在本地计算机上具有 SSH 访问权限):
remote: -----> Fetching app dependencies with mix
remote: * Getting cool_dep (git@gitlab.com:group/cool_dep.git)
remote: Host key verification failed.
remote: fatal: Could not read from remote repository.
remote:
remote: Please make sure you have the correct access rights
remote: and the repository exists.
所以这就是我到目前为止所做的 - 如果有人能告诉我我错过了什么或做错了什么,将不胜感激......
debitoor/ssh-private-key
buildpack 到我的 buildpacks 中,这样它们的读取方式如下:$ heroku config:set SSH_KEY=$(cat /Users/username/.ssh/heroku_id_rsa | base64) --app cool-app-12345
$ heroku config:set SSH_HOSTS="git@gitlab.com" --app cool-app-12345
最后,当我运行
git subtree push --prefix local_app cool-app-12345 master
,它开始加载,但在遇到第一个私有(private)依赖项时失败。谁能澄清我在这里缺少的东西?为什么主机 key 验证失败?
$ git clone ...
测试了公钥/私钥对这工作得很好,所以关键关系是有效的......当 Heroku 参与进来时,这似乎是一个问题。 最佳答案
我提取了 buildpack 的源代码并开始四处寻找——我发现 SSH_HOST
我设置的配置变量 - git@gitlab.com
- 没有找到,它只是默认为单个 git@github.com
硬编码的主机...文档说您可以添加其他主机,但它似乎对我不起作用。
我能够通过克隆 buildpack 并替换 bin/compile
中的第 13 行来解决此问题。和
ssh_hosts=${SSH_HOSTS:-"git@gitlab.com"}
因此,如果您的私有(private)存储库在 Github 中,您可能没问题……但如果它们位于不同的主机上,您可能需要获取 buildpack 代码并将其托管在您自己的带有自定义主机的存储库中。
关于Heroku/Elixir Phoenix 框架 - 私有(private) Gitlab 存储库的主机 key 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119177/