多个github帐号的ssh keys支持

不知不觉就有了多个github帐户,平时为了方便都是采用ssh去操作git,所以这个时候问题就来了,在同一台机器上对多个github操作时,会因为ssh key只有一个而无法提交。所以我需要想办法配置多个ssh keys.

解决办法

放狗搜了一圈,有类似需求的大有人在。例如这里:Multiple GitHub Accounts & SSH Config

\’I\’m having some trouble getting two different SSH keys/GitHub accounts to play well together. I have the following setup:

Repos accessible from one account using git@github.com:accountname Repos accessible from another account using git@github.com:anotheraccount

傻瓜操作步骤

生成新的ssh key

ssh-add这一步很重要,否则是前功尽弃


ssh-keygen -t rsa -C \'work@mail.com\'
ssh-add ~/.ssh/work_rsa

配置.ssh/config

我只需要在~/.ssh/config里新增一个Host的别名,将不同帐号的区分开来就可以了。

Host me.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/me_rsa

Host work.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/work_rsa

配置git仓库

需要把git的配置更改过来,其中github.com更换为work.github.com,这样它会找到对应的key来登录。

git remote add origin git@work.github.com:work/test.git

设置自动重连的ssh代理通道

我目前常用的翻墙办法就是拿ssh搭个代理通道,然后chrome + switch!插件一起配合,这就算翻墙了。这法子只要拿个机器跑一小脚本,比如:


ssh -D 7070 -qnN [username]@[server]

但是ssh通道如果闲置了一段时间,就会自动断连,等我需要用到代理的时候往往又得蛋疼的重新跑一遍,非常麻烦。所以我刻苦学习前辈的经验,找到一个解决办法,在mac或linux下都可使用,分享如下:

  • 把ssh配置为免密码登录,这个一搜一大把,略过不提
  • 在/etc/inittab的最后一行加上:
    
    tunl:345:respawn:/usr/bin/ssh -D 7070 -qnN [username]@[server] > /dev/null 2>&1
    
  • 让修改的inittab马上生效
    sudo init q
  • 在/root/.ssh/config里加上几行
    
    Host *
      ServerAliveInterval 60

然后这个ssh通道就会自动重连了。

Update

  • 增加了一个ssh配置,要不然这个进程虽然在,但是通道已经连不上了
  • .ssh/config的配置是关键,/etc/inittab的配置只是让服务器开机即启动ssh通道