Git子模块公钥权限错误

vohkndzv  于 2023-01-07  发布在  Git
关注(0)|答案(2)|浏览(249)

我在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,但是,唉,它是必需的。
      如何解决此问题?或者我缺少什么配置?

我将在一个开发Docker容器环境中完成这项工作,因此不需要排除这一点。
这不像下面的问题:

xdyibdwo

xdyibdwo1#

您需要确保克隆存储库时实际使用的是什么密钥。
如果您的访问键不是默认键(例如,默认为~/.ssh/id_rsa),那么子存储库的URL需要引用第二个键(访问键)
您可以更改remote URL of a submodule
git子模块设置-url--访问键:me/mySubmoduleRepository
它将使用~/.ssh/config文件,其中:

Host accessKey
  hostname bitbucket.or
  User git
  IdentityFile ~/.ssh/myAccessKey

这样,git submodule update --init将使用直接引用您的访问密钥的SSH URL:子模块应该被克隆。

inb24sb2

inb24sb22#

使用https而不是ssh来克隆子模块可能更容易:在. git模块中从git@bitbucket.org:更改为https://bitbucket.org/,然后

git submodule sync
git submodule update --init

参见Git submodule: git@github.com: Permission denied (publickey). fatal: Could not read from remote repository

相关问题