Flashback about two years, and I had never touched git. GitHub was that place where you clicked the Download link to get a zip of the code you wanted. That being the case, I am still learning as I go. The other day, I drove myself crazy over a complete n00b mistake, which I am embarrassed to admit.
While working on an Ubuntu server, I was trying to pull changes from a Bitbucket repo into a subdirectory of /var/www. Every time I ran “git pull origin master,” the following error was displayed:
Permission denied (publickey). fatal: Could not read from remote repository.
I knew the correct SSH key had been added to my profile, but I ran “ssh -T firstname.lastname@example.org” to be sure. This returned the positive and expected:
logged in as jdoe.
So, why did it fail when I tried a git pull? I double-checked my remote, removed and re-added it to be sure. Then, it hit me! Because of the permissions set on the current directory, I was having to use sudo for all my git commands. But, sudo doesn’t know about my SSH keys (at least by default). After realizing this, the fix was easy: correct the permissions on the directory (which I should have done from the beginning instead of working around it with sudo) and add myself to the directory’s group. Sudo was no longer required and my authentication attempt worked beautifully.
Again, I hang my head in shame over this, but thought I should share in case someone else has a temporary lapse in judgement.
(While verifying the cause, I came across a quick guide that will forward your key to sudo, if you really must.)