On a private repository from gitlab, when I run git clone [email protected]:group/project-submodule.git
the clone completes successfully.
As part of the cloning process, I'm asked for the passphrase of my private key.
When I run submodule update --init "group/project-submodule"
It fails with:
Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). fatal: Could not read from remote repository.
While trying to process the submodule getting, I'm not asked for the passphrase for my private key.
(I had to anonymize it)
fatal: clone of '[email protected]:group/project-submodule.git' into submodule path 'C:/Users/user/repos/project-module/project-submodule' failed
I've checked the .gitmodules
file and it contains the right data (I think it can be confirmed by the error message).
The main element that calls my attention is that I'm not asked for my private key passphrase. Even weirder because, when I use git clone
directly, it runs as expected.
I also already diagnosed by accessing with ssh
and it asks me for the passphrase just like it happens when I execute a pull or a clone
Using git for windows "git version 2.16.2.windows.1"
When you generate SSH keys without sudo and then use sudo to clone a repository, you won't be using the same keys you generated. This leads to Github denying access to your private repositories because it can't verify that it's you.
If you pass --recurse-submodules to the git clone command, it will automatically initialize and update each submodule in the repository, including nested submodules if any of the submodules in the repository have submodules themselves.
Submodules allow you to keep a Git repository as a subdirectory of another Git repository. This lets you clone another repository into your project and keep your commits separate.
The git submodule update command sets the Git repository of the submodule to that particular commit. The submodule repository tracks its own content which is nested into the main repository. The main repository refers to a commit of the nested submodule repository.
Git tries to clone the submodule using ssh and not https. If you haven't configured your ssh key this will fail.
You can setup ssh-agent to cache the password for the ssh key and get git to use that. Or change to https.
Git is a bit confusing regarding submodules. They are configured in the .gitmodules
file in the directory, but changing the url here from ssh to https won't help. Git uses the url that is configured in .git/config
.
Open this file and you will find something like this.
[submodule "project-submodule"] url = [email protected]:project-submodule.git
Change this url to the https equivalent and try again.
You can also just change your ssh key to one that does not need a passphrase. I had same issue and now git submodule update --init --recursive
works fine after using no passphrase.
It seems to be a bug in Windows git that when it updates a submodule, it does not ask for the paraphrase key. (git version 2.19.1.windows.1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With