Composer无法使用给定密钥访问Github私有仓库

7

我试图通过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授权设置正确,并具有密钥,则只有这样才能自动工作。
总之,composer配置没有起作用。是否还有其他人遇到同样的问题,还是我做错了什么/需要在这里检查?提前致谢。

你能否尝试保持privkey_file和pubkey_file的完整路径? - Hari K T
我有类似的问题:对我来说,命令行中的 git 与远程仓库完美地配合使用(而且我在 .ssh/id_rsa 中有密钥),但是当我尝试在 composer.json 中指定仓库时(没有明确的密钥),它仍然要求输入密码。 - Dimitry K
5
您似乎为公钥和私钥都指定了相同的文件。是否有可能它们中的一个应该有不同的文件名?在我的情况下,这些密钥存储在两个不同的文件中。 - Larry Borsato
@LarryBorsato,你好,谢谢你注意到了这个问题。我已经在问题上进行了更正。只是确认一下,这并没有产生任何影响,仍然无法工作。 - Rana
@Rana,你是否已经配置了你的Github仓库来使用那个密钥?它似乎无法识别那个密钥。 - Larry Borsato
显示剩余2条评论
3个回答

2
我不确定你的问题是什么,但你可以使用ssh配置文件以另一种方式解决它。
这允许你配置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远程。在ssh级别上,它应该与通过composer完全相同的工作方式。


1
在我的情况下,我需要添加 ssh:// 前缀,而不是像这样传递一个普通的仓库 URL: git@github.com:{user}/{repo}.git。所以最终看起来是这样的:ssh://git@github.com:{user}/{repo}.git。然后它就可以工作了。
我不需要为私钥指定路径。它是从 .ssh 文件夹中获取的。
"repositories": [
        {
            "type": "vcs",
            "url":  "ssh://git@github.com:{user}/{repo}.git",
        }
    ]

-1
除了kkochanski的答案(抱歉,我没有足够的声望来评论他的答案)之外:
他的解决方案对我不起作用。我必须使用斜杠而不是冒号:
"repositories": [
    {
        "type": "vcs",
        "url": "ssh://git@github.com/[user]/[repo].git"
    }
],

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接