我在bitbucket中托管了两个仓库--我有一个访问密钥设置,可以用来单独克隆每个项目。仓库A有仓库B作为子模块。
在Windows上...成功克隆存储库A后,git submodule update --init
因以下原因失败:
Cloning into 'C:/Path/to/submodules/B'...
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'git@bitbucket.org:org/B.git' into submodule path 'C:/path/to/submodules/B' failed
Failed to clone 'submodules/B'. Retry scheduled
.gitmodules
设置如下
[submodule "submodules/B"]
path = submodules/B
url = git@bitbucket.org:org/B.git
...
如果我使用.gitmodules
中指定的URL并克隆该存储库,git clone git@bitbucket.org:org/B.git
将非常好地工作
似乎试图通过git submodule update --init
克隆的存储库无法看到/使用我添加的ssh访问密钥。
Git Submodule - Permission Denied建议不起作用
- 可能需要刷新密钥?* 不需要,该密钥可以完美地用于下载所有其他存储库
- 可能密钥本身有问题,请尝试
ssh -vT git@github.com
* 将其更改为bitbucket.org
后,它工作得非常好,身份验证成功。
- 可能密钥本身有问题,请尝试
- 我在使用http:/* 时没有这个问题--我也没有,我讨厌ssh,但是,唉,它是必需的。
如何解决此问题?或者我缺少什么配置?
- 我在使用http:/* 时没有这个问题--我也没有,我讨厌ssh,但是,唉,它是必需的。
我将在一个开发Docker容器环境中完成这项工作,因此不需要排除这一点。
这不像下面的问题:
2条答案
按热度按时间xdyibdwo1#
您需要确保克隆存储库时实际使用的是什么密钥。
如果您的访问键不是默认键(例如,默认为~/.ssh/id_rsa),那么子存储库的URL需要引用第二个键(访问键)
您可以更改remote URL of a submodule:
git子模块设置-url--访问键:me/mySubmoduleRepository
它将使用
~/.ssh/config
文件,其中:这样,
git submodule update --init
将使用直接引用您的访问密钥的SSH URL:子模块应该被克隆。inb24sb22#
使用https而不是ssh来克隆子模块可能更容易:在. git模块中从
git@bitbucket.org:
更改为https://bitbucket.org/
,然后参见Git submodule: git@github.com: Permission denied (publickey). fatal: Could not read from remote repository