Heroku/Elixir Phoenix 框架 - 私有(private) Gitlab 存储库的主机 key 验证失败

标签 heroku ssh elixir gitlab phoenix-framework

我正在将 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.

所以这就是我到目前为止所做的 - 如果有人能告诉我我错过了什么或做错了什么,将不胜感激......
  • 为此 Heroku 部署生成了一个新的公钥/私钥对。我将公钥放入 Gitlab 设置中的 SSH key 中。 ( key 没有 secret 密码)
  • 添加了debitoor/ssh-private-key buildpack 到我的 buildpacks 中,这样它们的读取方式如下:
  • https://github.com/debitoor/ssh-private-key-buildpack.git
  • https://github.com/HashNuke/heroku-buildpack-elixir.git
  • https://github.com/gjaldon/heroku-buildpack-phoenix-static.git
  • 将公钥的私钥对应项添加到应用程序的配置中:
    $ heroku config:set SSH_KEY=$(cat /Users/username/.ssh/heroku_id_rsa | base64) --app cool-app-12345
    
  • 在应用程序的配置中设置 SSH 主机:
    $ 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/

    相关文章:

    node.js - 使用 OpenCV 的 Heroku NodeJS 应用

    javascript - 如何在 Messenger 上使用 Node.js/Heroku/Wit.ai ChatBot 在 x 小时后发送推送

    linux - SSH 进入 AWS EC2 实例给出权限被拒绝(公钥)

    memory-leaks - GenServer 进程的内存泄漏

    java - 从 Java 1.7 更新到 Java 1.8 以使用 Heroku 会导致任何问题吗

    heroku - 无法在 Heroku 上添加 Dynos

    Bash 从 ssh 配置文件中提取特定主机的用户

    batch-file - psftp.exe 从服务器获取文件并删除

    elixir - Keyword.Merge/3 函数中删除了键

    elixir - 在 elixir 中将两个相同大小的列表转换为键值对