Github does not let you use the same SSH key as a deploy key for several projects. Knowing this, you’ve got 2 choices: edit the configuration of your 1st project and say that this SSH key is not longer a deploy key or find another solution.
Deleting the deploy key of the existing project
To know what is the project associated with your deploy key, you can run the command
ssh -T -ai ~/.ssh/id_rsa [email protected] (adjust the path to your SSH key if necessary). Github will then great you with something like:
Hi AntoineAugusti/foo-project! You've successfully authenticated, but GitHub does not provide shell access.
From this point, solving your problem is just a matter of going to the settings of this repository and removing the deploy key.
The alternative: generating other SSH keys
We are going to generate a SSH key for each repository, you’ll see it’s not too much trouble.
- First, generate a new SSH key with a comprehensive name with the command
ssh-keygen -t rsa -f ~/.ssh/id_vendor_foo-project -C https://github.com/vendor/foo-project(replace
- Edit your
~/.ssh/configfile to map a fake subdomain to the appropriate SSH key. You will need to add the following content:
Host vendor_foo-project.github.com Hostname github.com IdentityFile ~/.ssh/id_vendor_foo-project
This code maps a fake Github’s subdomain to the root domain and say that when connecting to the fake subdomain, we should automatically use the previously created SSH key.
- Add the newly created SSH public key as a deploy key to the repository of your choice
- Clone your Git repository with the fake subdomain: instead of using the URL given by GitHub (
git clone [email protected]:vendor/foo-project.git) you will use
git clone git@vendor_foo-project.github.com:vendor/foo-project.git
- From now on, running
git pullwill connect to GitHub with the appropriate SSH key and GitHub will not complain 🙂
If you’ve already cloned the Git repository before, you can always change the remote URL to the Git server by editing the file
.git/config of your project.