http://blog.csdn.net/wangpingfang/article/details/53117087

===

原理:ssh config 文件指定不同的key

=====

 

应用场景
作为一个使用mac+github的开发人员,除了上班期间使用公司账号提交代码,业余时间也会用自己的账号写一些感兴趣的小项目。
默认情况下,Mac下只会支持一个github的ssh配置,当你向另一个账号的项目push时,git会使用默认的账号进行权限验证,结果
就是没法在同一个Mac机器下共存多个github账号。那如何做到这些呢?
创建不同的公钥
参考github SSH帮助分别为公司账号和个人账号创建一个公钥,假定两个公钥创建完后为:
    ~/.ssh/id_rsa_work
    ~/.ssh/id_rsa_personal
按照如下方式添加这两个公钥:
    $ ssh-add ~/.ssh/id_rsa_work
    $ ssh-add ~/.ssh/id_rsa_personal
最后,你可以使用如下命令检查已保存的公钥:
    $ ssh-add -l
参考github SSH帮助将新建的公钥分别添加到公司github账号和个人github账号
修改.ssh/config
修改~/.ssh/config以添加多个ssh配置
    # Work GitHub
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_work
    # Personal GitHub
    Host personal.github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_personal
测试配置
使用如下命令,检查之前的配置是否正确:
    $ ssh -T git@github.com
    Hi pwang08! You’ve successfully authenticated, but GitHub does not provide shell access.
    $ ssh -T git@personal.github.com
    Hi Turalyonx! You’ve successfully authenticated, but GitHub does not provide shell access.
牛刀小试
对于公司账号的项目,git使用跟之前没有任何区别,因为公司账号是默认账号。
对于个人账户下的项目,假设其ssh链接为:
    git@github.com:myaccount/cocos2d-x.git
如果我们直接执行
    git clone git@github.com:myaccount/cocos2d-x.git
git会根据~/.ssh/config配置下的Host去寻找授权信息,比如当前链接的Host为github.com,那么git就会使用~/.ssh/id_rsa_work进行授权
由于这是个人项目,授权就会失败。那么如何才能让git去找到正确的授权信息呢,只需要把项目链接
    git@github.com:myaccount/cocos2d-x.git
修改成
    git@personal.github.com:myaccount/cocos2d-x.git
即可。现在git就会根据personal.github.com找到~/.ssh/id_rsa_personal,并使用其作为授权文件

发表评论

电子邮件地址不会被公开。