如何对Git子模块使用SSH而不是HTTP?

如何对Git子模块使用SSH而不是HTTP?,git,github,ssh,git-submodules,git-clone,Git,Github,Ssh,Git Submodules,Git Clone,为什么人们会有这个问题 $git clone—递归git@github.com:acani/Chats.git 克隆成“聊天室”。。。 权限被拒绝(公钥)。 致命:无法从远程存储库读取 请确保您具有正确的访问权限,并且存储库存在 我读过一些答案,上面说要将子模块URL从SSH更改为HTTP,但为什么我必须这样做呢。我不想那样做。我想保持SSH,这样我就不必在终端中输入我的用户名和密码,如果我想推。每个人都可以很好地克隆SSH URL,那么为什么他们不能递归地将其克隆为子模块呢?作为一种解决方法

为什么人们会有这个问题

$git clone—递归git@github.com:acani/Chats.git 克隆成“聊天室”。。。 权限被拒绝(公钥)。 致命:无法从远程存储库读取

请确保您具有正确的访问权限,并且存储库存在


我读过一些答案,上面说要将子模块URL从SSH更改为HTTP,但为什么我必须这样做呢。我不想那样做。我想保持SSH,这样我就不必在终端中输入我的用户名和密码,如果我想推。每个人都可以很好地克隆SSH URL,那么为什么他们不能递归地将其克隆为子模块呢?

作为一种解决方法,您可以尝试对任何github repo使用https URL:

cd myParentRepo
git config url.https://github.com/.insteadOf ssh://git@github.com/
# or
git config url.https://github.com/.insteadOf git@github.com:

SSH协议不支持匿名访问Git存储库

所以,不要使用SSH协议。相反,请使用智能HTTP协议(推荐)或Git协议

对于存储库的
.gitmodules
文件中的每个子模块URL,请替换
git@github.com:
https://github.com/
(使用智能HTTP协议)或
git://github.com/
(使用Git协议)


更多信息:

可能重复:@ma1我是否用下面建议的解决方法回答了您的问题?@VonC抱歉,我没有尝试您的解决方法。我刚刚从SSH协议切换到Git协议。谢谢你的回答。所以我的答案是正确的:对子模块使用https而不是SSH明确地说:我的答案是关于不改变任何东西,但仍然使用正确的协议。