需求: 公司的工作使用的github作为远程仓库,故有一个公司邮箱注册的账号,而我自己也有自己的github账号,需要(摸鱼)时也想推送一些代码到私人仓库中.
注意: 此方法也适用于gitlab
, gitee
等平台.
分析: github上拉代码,推代码有两种方法,一种是使用账号密码的形式,另一种是使用ssh.作为一个懒人,肯定是越省事越好.所以选择ssh的方法.
所以一台电脑需要生成两个ssh_key
,分别对应两个账号.
方法:
- 进入
~/.ssh
文件夹,使用ssh-keygen -t rsa -C "my@github.com"
命令,一路enter,先生成一个自己的keygen. - 再次输入
ssh-keygen -t rsa -C "company@github.com"
(注意与第一个命令邮箱的区别),注意,这里先别急着enter,这时如果还enter会覆盖掉第一步生成keygen, 这里要给本次keygen起一个新的名字,比如id_rsa_company
,生成一个公司账号的keygen. - 此时
.ssh
文件夹中应该有四个文件,分别是id_rsa id_rsa.pub id_rsa_company id_rsa_company.pub
. - 但是这样的话其实默认找到的还是第一次生成的keygen,这是系统默认的.如果想让两个都被检索到,需要把ssh key 加到 ssh agent 中,先执行
ssh-add -l
命令,发现并没有添加上. - 重点来了! 执行
ssh-add -K ~/.ssh/id_rsa_company
把keygen加入到agent中,这样公司的账号也能推拉代码啦~(这命令相当于把对应的密钥加进 ssh-agent 所管理的一个 session 当中,这样每次关机重启之后ssh-agent 服务也就重置了,session 会话也就失效了。就需要重新再加一次。所以加个参数 -k是将密钥放在 keychain中,这样就不会过期了) - 补充: 发现原来自己的账号却不能拉代码了,一直说仓库不存在,我凭直觉执行了
ssh-add -K ~/.ssh/id_rsa
,把第一次自己的keygen也加入到了agent中.终于可以拉了!