2018年1月17日 | Leave a comment 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,并使用其作为授权文件