Git子模块-权限被拒绝

Git子模块-权限被拒绝,git,github,git-submodules,Git,Github,Git Submodules,我无法克隆我的私有git存储库中现有的子模块。我可以访问整个存储库 已经使用了以下命令但力不从心,请帮助。在现有存储库中克隆子模块的正确方法是什么 djrecker$ git submodule update --init --recursive Submodule 'Path' (git@github.com:Path) registered for path 'App' Cloning into 'Path'... Permission denied (publickey). fatal:

我无法克隆我的私有git存储库中现有的子模块。我可以访问整个存储库

已经使用了以下命令但力不从心,请帮助。在现有存储库中克隆子模块的正确方法是什么

djrecker$ git submodule update --init --recursive
Submodule 'Path' (git@github.com:Path) registered for path 'App'
Cloning into 'Path'...
Permission denied (publickey).
fatal: Could not read from remote repository.

我有这个问题。在我的例子中,公钥(~/.ssh/id\u rsa.pub)没有在服务器上正确设置

确保获得所有子模块: 参考:

要使用密钥诊断权限问题,请执行以下操作:
  • 访问权限:确保:(1)您正在克隆公共回购协议或(2)它是私有的,但您的github帐户具有访问权限
  • 使用
    ssh-vT进行诊断git@github.com
    。确保此处列出了您设置的密钥。有关权限问题的更多帮助,请遵循以下指南:
  • 向Github添加密钥:
检查子模块的详细信息
  • 在项目根文件夹中打开
    .gitmodules
    ,确保一切正常。按照@VonC的建议,尝试将它们克隆到单独的文件夹中
  • 您可能希望将子模块从使用SSH切换到HTTPS。这将允许您键入用户名和密码。但这可能会导致与您的队友发生问题,并实现自动化。先和他们谈谈

    • 我也面临同样的问题。问题出在您的github repo上,您可能正在使用一些旧的ssh密钥

      您需要更新当前ssh密钥

      Steps involved are:
      
      1. vim ~/.ssh/id_rsa.pub
      2. copy the ssh key
      3. Go to the github settings
      4. Select the option ssh keys
      5. Remove the old ssh keys not used anymore.
      6. Add a new ssh key.
      7. Try running the "git submodule update --recursive"
      

      这对我有用

      有趣的是,在类似的情况下,使用HTTPS链接对我很有效。

      • 在Windows上:

      在我的例子中,当我使用常规命令行(gitcmd)时,它也在抱怨同样的问题。然后我尝试了GitBash,没有问题了

      在我的例子中,问题是由console引起的,它没有向我询问密码。解决方案是将控制台从CMDER更改为Gitbash。当我使用CMDER时,它没有显示导致此访问被拒绝问题的密码窗口。

      Linux/GitBash的TortoiseGit/Windows子系统也有同样的问题。 解决方案是通过代理(密钥)而不是密码使用身份验证

      对于陆龟

      $ eval `ssh-agent -s`
      $ chmod 600 /path/to/key
      $ ssh-add /path/to/key
      
      • 跑步比赛
      • 添加您的密钥
      • 输入密码
      • 龟甲菜单->子模块更新
      (如果没有pageant git clone,它会请求密码并按预期工作,但git更新失败并出现错误)

      对于WS4L:

      $ eval `ssh-agent -s`
      $ chmod 600 /path/to/key
      $ ssh-add /path/to/key
      

      继续进行git子模块更新

      我在父文件夹及其子文件夹中使用git init创建了一个子模块,但出现了错误。刚刚删除了.git文件夹,并在正确的父文件夹中使用git init重新开始

      VS代码中的Win10+git bash终端。 在我的例子中,我通过VS代码使用git bash。当使用子模块时,git会弹出一个窗口来输入密钥的密码短语。通过VSCode的Bash将不会弹出此窗口。使用windows上下文菜单项,在repo文件夹中显示“Git Bash Here”,如下所示:


      工作出色。

      我也有同样的问题。我从.gitmodules中删除了条目,并执行了
      git submodule init;git子模块更新
      然后我从文件系统中删除了条目,并执行了
      git子模块更新--remote
      ,它再次开始下载子模块。

      你能克隆
      git@github.com:路径
      是否独立?只是为了检查直接克隆是否可以工作,以及您是否有访问权限。是的,我这样做了,并且我得到了除子模块之外的整个repo,您可以检查
      .gitmodules
      内容(在您刚刚克隆的repo中),并尝试克隆其中引用的url。您能告诉我怎么做吗?我对git有点陌生,所以请告诉我。正如@VonC提到的,在检查了
      .gitmodules
      中的内容后,我发现有一个不同于我必须刷新ssh密钥的主repo。这样做之后,它工作了。它必须被智能方式接受,只需进入子模块文件夹,然后克隆https链接->工作100%@fam绝对不行。如果您需要进行编辑并能够推送更改,则不希望使用HTTPS协议。问题是在windows gitlab运行程序中出现此问题时。。。它默认使用CMD!
      git submodule update