我有一个容纳3子模块,所有3个属于私人也Github上的私人回购协议。
我已经产生了我的EC2服务器上4个SSH密钥并应用它们作为Github上部署键全部4个私人仓库。
我能够克隆主存储库,因为它认识到SSH密钥。 当我运行“混帐子模块更新”失败与以下错误私人回购协议:
错误:库未找到。 致命:远程端挂机意外
如果我手动签出那些它的工作原理私人回购协议,但不使用git的子模块命令时。 任何的想法? 难道这不完全支持?
我有一个容纳3子模块,所有3个属于私人也Github上的私人回购协议。
我已经产生了我的EC2服务器上4个SSH密钥并应用它们作为Github上部署键全部4个私人仓库。
我能够克隆主存储库,因为它认识到SSH密钥。 当我运行“混帐子模块更新”失败与以下错误私人回购协议:
错误:库未找到。 致命:远程端挂机意外
如果我手动签出那些它的工作原理私人回购协议,但不使用git的子模块命令时。 任何的想法? 难道这不完全支持?
GitHub的认证是一个有点奇怪。 他们不使用的用户名; 他们只是根据你提出你是哪个用户的公钥推断。 既然你产生4个部署键,它是哪一个会被你的服务器在连接到github上可以使用任何人的猜测 - github上会接受其中任何一个,然后拒绝给没有注册的关键库的任何访问。
因此,最简单的解决方法就是使用的所有存储库的单一部署的关键。
如果你不能,但是,你可以解决这个使用ssh主机别名破解。 添加到您的服务器~/.ssh/config
节如下所示:
Host repo-foo
HostName ssh.github.com
Port 443
User git
IdentityFile /path/to/my-ssh-key-file-for-foo
IdentitiesOnly yes
Host repo-bar
HostName ssh.github.com
Port 443
User git
IdentityFile /path/to/my-ssh-key-file-for-bar
IdentitiesOnly yes
然后点你在子模块repo-bar:username/bar.git
和repo-foo:username/foo.git
而不是使用git@github.com:...
的形式。
这将有效地使Git和ssh来对待每一个仓库作为生活在不同的服务器上,并传递一个明确的身份文件,所以在什么键使用不会产生混淆。