I followed the very handy instructions at https://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts–net-22574 to set up different keys for my two github accounts.
My .ssh/config file looked like this:
Host github-work HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_work Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa
I then had no problem cloning from github using `github-work` as a host
git clone git@github-work:work/work-project.git Cloning into 'work-project'... remote: Counting objects: 16, done. remote: Compressing objects: 100% (12/12), done. remote: Total 16 (delta 0), reused 16 (delta 0), pack-reused 0 Receiving objects: 100% (16/16), done. Checking connectivity... done.
HOWEVER, pushing was another matter:
git push -u origin master ERROR: Permission to work/work-project.git denied to mypersonalusername. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
The push was not using the right ssh key – the access denied message refers to my personal github account username.
For debugging purposes, I ran the following:
ssh -v git@github-work
Amongst the output was:
debug1: Reading configuration data /home/me/.ssh/config debug1: /home/me/.ssh/config line 1: Applying options for github-work debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Hostname has changed; re-reading configuration debug1: Reading configuration data /home/me/.ssh/config debug1: /home/me/.ssh/config line 8: Applying options for github.com
A bit of googling led to this stackoverflow post: why git push can not choose the right ssh key?.
The answer is to remove the vanilla/default github.com entry from the .ssh/config file so it only contains the section for the non-standard host. This works!