Composer权限被拒绝(公钥)

4

我有一个私人仓库在BitBucket上,我正在尝试使用composer install在本地主机上安装,这是我的composer.json文件:

{
"repositories": [
    {
        "type": "git",
        "url":  "git@bitbucket.org:username/repo.git"
    }
]
}

当我在命令行运行composer install时,会出现以下信息:

[RuntimeException] Failed to execute git clone --mirror "git@bitbucket.org:username/repo.git" "C:/Users/...../" Cloning into bare repository 'C:/Users/.....'... Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

我的密钥有密码,但composer从未要求输入密码。我正在运行Windows 10,并且Pageant客户端正在运行并且已选择了正确的密钥。
此外,还有一个包含以下数据的配置文件:
Host bitbucket.org
IdentityFile ~/.ssh/openssh (yes my key name is openssh)

有趣的是,如果我复制并粘贴这个命令:

git clone --mirror "git@bitbucket.org:username/repo.git"

我会被要求输入我的密码,然后开始克隆存储库。
问题可能出在哪里呢?大多数关于此错误的信息直接涉及git命令,但在我的情况下它们有效,不起作用的是composer。我做错了什么?

这是我的评论,可能有点离题,因此我通过在我的 Docker 中运行 Composer 来解决公钥问题。可能是因为我的电脑上的 Git 版本比 Docker 中的版本旧 - stackoverflow.com/questions/48946855/ - FantomX1
3个回答

11

我有同样的问题,这篇帖子的答案帮助了我:为什么git在Windows下无法记住我的口令

我所做的就是在CMD中运行'start-ssh-agent'并提供密码。

第三种解决方案假定您在使用Windows、msysgit和本地命令提示符。

安装msysgit。

确保允许git在MS-DOS命令提示符上使用。

运行start-ssh-agent。

输入SSH密码。

完成!现在应该可以在本地命令提示符中使用Git命令。


1
天啊!我真的花了4个小时在论坛上搜索,想知道这是git还是phpstorm还是composer或者其他什么?!这个方法完全有效,我太高兴了! - Someone
我也是,撞了三个小时的墙!如果可以的话,我会投10票的,非常感谢! - Andre Polykanine

4

1. 确保你的公钥已经被加载到Bitbucket Cloud

  1. 打开浏览器并登录Bitbucket Cloud。
  2. 从菜单栏中选择用户名 > 管理账户。系统将显示账户设置页面。
  3. 点击SSH密钥。SSH密钥页面将显示,展示任何现有密钥的列表。
  4. 如果你的密钥未列出,请设置一个。

2. 确保你的身份已经被加载到你的SSH代理

打开Pageant查看已加载的密钥。如果你的密钥不在列表中,请点击 添加密钥

你可以测试发送的密钥

ssh -T git@bitbucket.org

更新:(头像)> 个人设置 > SSH密钥。密钥不再在“管理帐户”下。设置密钥的说明。 - Bob Stein

0

我曾经遇到过与OP描述相同的问题,我也尝试按照为什么git在Windows下无法记住我的密码的说明进行操作。

但是我只限于以下步骤:

  1. 运行PuTTY的pageant.exe,打开您的.ppk文件(“添加密钥”),并提供您的密钥密码。
  2. 访问Windows环境变量对话框(右键单击“计算机”,单击“属性”,单击“高级系统设置”或“高级”选项卡,单击“环境变量”)。添加以下环境变量:

    GIT_SSH=C:\full\path\to\plink.exe

重启命令行工具后(重要的是要使新的环境变量生效),它就可以正常工作了。


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