Multiple SSH Keys settings for different github account
create different public key
create different ssh key according the article Mac Set-Up Git
$ ssh-keygen -t rsa -C "your_email@youremail.com"
Please refer to github ssh issues for common problems.
for example, 2 keys created at:
~/.ssh/id_rsa_activehacker
~/.ssh/id_rsa_raomingchao
then, add these two keys as following
$ ssh-add ~/.ssh/id_rsa_activehacker
$ ssh-add ~/.ssh/id_rsa_raomingchao
you can delete all cached keys before
$ ssh-add -D
finally, you can check your saved keys
$ ssh-add -l
Modify the ssh config
$ cd ~/.ssh/
$ touch config
$ subl -a config
Then added
#activehacker account
Host github.com-activehacker
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_activehacker
#raomingchao account
Host github.com-raomingchao
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_raomingchao
Clone you repo and modify your Git config
clone your repo
git clone git@github.com:activehacker/gfs.git gfs_raomingchao
cd gfs_raomingchao and modify git config
$ git config user.name "raomingchao"
$ git config user.email "raomingchao@gmail.com"
$ git config user.name "activehacker"
$ git config user.email "jexlab@gmail.com"
or you can have global git config
$ git config —global user.name “raomingchao”
$ git config —global user.email “raomingchao@gmail.com”
then use normal flow to push your code
$ git add .
$ git commit -m "your comments"
$ git push
Another related article in stackoverflow
Even if the user and host are the same, they can still be distinguished in ~/.ssh/config. For example, if your configuration looks like this:
Host gitolite-as-alice
HostName git.company.com
User git
IdentityFile /home/whoever/.ssh/id_rsa.alice
IdentitiesOnly yes
Host gitolite-as-bob
HostName git.company.com
User git
IdentityFile /home/whoever/.ssh/id_dsa.bob
IdentitiesOnly yes
Then you just use gitolite-as-alice and gitolite-as-bob instead of the hostname in your URL:
git remote add alice git@gitolite-as-alice:whatever.git
git remote add bob git@gitolite-as-bob:whatever.git