I have created two GitHub accounts. One for my work user and one for my personal self. I needed to do catch up on some work and as such cloned my work repo onto my personal PC. In order to do simple "git push origin master" commits without entering my username and password the whole time I simply want to add my public key from my home pc to the work repo. However Github gives this error:
Error: Key already use
After a bit of Googling I came across this link which states "To resolve the issue, remove the key from the other account or repository and add it to your account" Of course there is a duplicate key as I've added my home public key to github so that I can code on my own personal projects. After all I want to be able to code to my work repo using both my work pc and personal pc.
How can you add multiple "same" public keys without Github throwing that error and also why in the world, is that error thrown in the first place?
You can create one more key pair, say id_rsa_personal.pub
, and add it to the Github account.
Next, create/edit the .ssh/config
file.
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host github-public
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_public
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
The above file will help you to use more than one Github account. For background info, refer to the answers to this question.
Next, you will need to alter your .git/config
remote url to point to:
git@github-personal:<gh_username>/<gh_reponame>.git
Rather than the usual:
git@github.com:<gh_username>/<gh_reponame>.git
The key could be already in use on other github projects as deploy key, that's a bit tricky to find but run:
ssh -T -ai ~/.ssh/KEY_NAME git@github.com
change KEY_NAME
with the name of your SSH private key and you will be good to go
from: https://help.github.com/articles/error-key-already-in-use/#finding-where-the-key-has-been-used
ssh -T -ai ~/.ssh/id_rsa git@github.com
I get Permission denied
.
sudo ssh
(but it is very uncommon to have a setup where your can't call the ssh command without it)
sudo
makes no sense in Git Bash / MSYS2, so it might be important whether I ran it in MSYS2 or not ... (:/)
sudo
as a prefix in your answer? It wouldn't hurt, I think. I mean – people like myself, who run "Linux" commands inside MSYS2 every now and then – we will very likely know sudo
makes no sense in an MSYS2 terminal. So I don't think an added sudo
would confuse anyone. Users of MSYS2 will know it is not native Linux. (To clarify: I run MSYS2 installed on Windows 10.)
John commented that it didn't work for him.
Perhaps the step you're missing is you need to alter your .git/config remote url to point to git@github-personal/<reponame>.git
etc.. rather than the usual git@github.com/<reponame>.git
You probably just need to change the name of your key.
ssh-keygen -t rsa -b 4096 -C "<email>"
Then it will ask to enter the file name, make sure that you enter the path name which does not exist on your system. Usually, "id_rsa" file name is created by default on MAC. Just change the name and then use following command to copy
pbcopy < {Path where SSH-Keygen is stored}
That's it. You can simply paste this keygen (copied from above command on the clipboard) in GitHub and use that without any problem.
This works for me,
Generate the SSH keys using ssh-keygen. Let's say the key is in ~/.ssh/id_rsa_foo Now, $ cat ~/.ssh/id_rsa_foo.pub and paste it on your GitHub keys. You can use GIT_SSH_COMMAND environment variable to achieve what you want. Do $ GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa_foo' git push origin master. Check your Github repo for the magic. Cheers!
you can use the same ssh key for different github repositories but cannot use the same ssh key for many repositories (i.e,same repository from different logins or from forked) as github will not allow same deploy key more than once for a repository
You can create a different key in your machine without disturbing your existing keys like:ssh-keygen -t rsa -C "your_email@example.com"
Now provide your file name to identify your key for the repository
Enter file in which to save the key (/home/demo/.ssh/id_rsa):/home/demo/.ssh/id_rsa_mykey<br>
See https://developer.github.com/guides/managing-deploy-keys/#deploy-keys for details.
I've found a workaround that works for me:
You cannot add the same SSH key to different accounts, and that is true for GitHub, BitBucket, etc. But you can use different SSH keys for each account. The only downside then is how to easily switch between them?
I use ssh-agent
and it can use multiple keys at the same time. I auto add them through .bashrc
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa2
fi
This approach works regardless of which key is added in your GitHub account. I guess ssh-agent
makes attempts with each key until it succeeds. And if you don't want to add all keys, you just comment out the relevant line in the .bashrc
before starting a new shell.
Success story sharing
~/.ssh/id_rsa.pub
for company user, and~/.ssh/John.pub
for yourself? But anyway, the correct approach is not to create the specifc user for company, but organization.~/.ssh/config file
. Just add anotherIdentityFile ~/.ssh/id_rsa_personal
line under theIdentityFile ~/.ssh/id_rsa
and add the new key to the new github account