【问题标题】:Composer Github private repository not working with given keyComposer Github 私有存储库无法使用给定的密钥
【发布时间】:2014-08-20 04:16:40
【问题描述】:

我试图从通过composer 安装的 Github 获取私有存储库。我的composer 配置如下:

"repositories": [
            {
                "type": "vcs",
                "url":  "git@github.com:{user}/{repo}.git",
                "options": {
                    "ssh2": {
                        "user": "ranacseruet" 
                        "privkey_file": "./keys/id_rsa",
                        "pubkey_file": "./keys/id_rsa.pub"
                    }
                }
            }
        ]

但是,它不适用于此配置。它仍然要求 github 用户/通行证。但是,如果我的系统的 github 授权使用密钥正确设置,那么它只会自动运行。

无论如何,作曲家配置都不起作用。是否有其他人面临同样的问题,或者我做错了什么/需要在这里检查?提前致谢。

【问题讨论】:

  • 您能否尝试保留 privkey_file 和 pubkey_file 的完整路径
  • 你好,哈里,是的,我也试过了。但同样的结果。我不确定,但我的 ssh2 安装可能存在一些问题。我会检查的。
  • 另一篇文章或许能帮到你seld.be/notes/authentication-management-in-composer
  • 我有类似的问题:对我来说,命令行中的git 与远程仓库完美配合(我在.ssh/id_rsa 中有密钥),但是当我尝试在composer.json 中指定仓库时(没有显式密钥)它仍然要求输入密码。
  • 您似乎为公钥和私钥指定了相同的文件。其中一个是否有可能具有不同的文件名?在我的情况下,这些键位于两个单独的文件中。

标签: php github ssh composer-php ssh-keys


【解决方案1】:

我不确定您的问题是什么,但您可以使用 ssh config file 以另一种方式解决。

这允许您配置 SSH 连接以使用“虚拟”主机的特定凭据,从而允许您更改连接到 Git 存储库的方式,因此可用于修改使用 ssh 的 Composer 依赖项。

编辑 ~/.ssh/config 例如

Host ranacseruet_github.com
User git
HostName github.com
IdentityFile [path-to]/keys/id_rsa

然后修改您的 composer.json 以使用假主机并删除 ssh 选项:

"repositories": [
    {
        "type": "vcs",
        "url":  "git@ranacseruet_github.com:{user}/{repo}.git",
    }
]

因此,当 ssh 尝试连接到“虚拟”主机 ranacseruet_github.com 时,它将使用指定的凭据。

我使用这种技术来定义需要特定凭据的 git 遥控器。它应该通过 composer 工作,因为它是 ssh 级别的更通用的解决方案。

【讨论】:

    【解决方案2】:

    在我的例子中,我需要添加 ssh:// 前缀,而不是像 git@github.com:{user}/{repo}.git 这样只传递一个普通的 repo URL。所以它最终看起来像这样:ssh://git@github.com:{user}/{repo}.git。然后就成功了。

    我不需要为私钥提供路径。这是从.ssh 文件夹中抓取的。

    "repositories": [
            {
                "type": "vcs",
                "url":  "ssh://git@github.com:{user}/{repo}.git",
            }
        ]
    

    【讨论】:

      【解决方案3】:

      除了 kkochanski 的 answer(对不起,我没有足够的声誉来评论他的回答):

      他的解决方案对我不起作用。我不得不使用斜杠而不是冒号:

      "repositories": [
          {
              "type": "vcs",
              "url": "ssh://git@github.com/[user]/[repo].git"
          }
      ],
      

      【讨论】:

        最近更新 更多