背景
通常我们的笔记本,在公司的时候需要连公司的gitlab,在家的时候学习需要连github或bitbucket,同一台笔记本,我们怎么支持连多个呢?
方法其实是个伪命题,不存在这样的麻烦。不需要像网上说的那样建一个 config
文件,然后blabla一顿操作。
只要在电脑上生成公钥和私钥,把同样的公钥在github、bitbucket和gitlab上设置就行了,共用一份。
步骤以下以我的笔记本Windows系统为例,假设还未生成过ssh key(以前生成过则可以删除重新生成),则:
ssh-keygen -t RSA
,之后一直回车- 在/.ssh中找到生成的文件。是当前用户home目录,如
C:\Users\Administrator
。生成若干文件,如私钥、公钥和 .gitconfig,打开公钥id_rsa.pub,拷贝里面的内容 - 打开gitlab/github/bitbucket等需要添加私钥的网站,粘贴刚刚复制的公钥内容并保存
注意:
- 新增公钥通常有个Title,这个我觉得是用来标识所贴的公钥对应的私钥在哪里,比如 “我的华硕笔记本”。
ssh-keygen -t RSA
通常不要带邮箱,如ssh-keygen -t RSA -C xxx@xxx.com
,这个-C 是注释内容,让公钥内容看起来可理解,其内容对结果没影响。但是如果固定为某个邮箱可能会有误导性,比如你github用和公司用的邮箱不一样。如果非得-C,建议ssh-keygen -t RSA -C my_asus_laptop
,注释是哪台笔记本,估计可以用中文。ssh-keygen -t RSA
无-C注释,会默认使用Windows的用户名@计算机名
- 实际上,贴到bitbucket等的SSH key会自动删除掉
用户名@计算机名
,只留公钥信息 - 对于公仓,添加后能
git clone
项目并不代表配置正确,能push才证明权限没有问题。对于私仓,能克隆就代表权限没问题。-----毕竟不需要任何配置也是可以克隆任何公仓的。 - push代码后,gitlab/github/bitbucket展示的身份(提交者),是用项目的user.email来匹配的。通常会设置
git config user.name xxxx
、git config user.email xxxx
- 建议最好不要设置global的user.name和user.email,每个仓库独立设置,其实并不麻烦。无设置user.name和user.email的将不能commit,这样也可以避免global设置的名字和邮箱混淆(毕竟工作和学习是不同邮箱账号)
- 同一台电脑,不同次生成的SSH key是不一样的(不重复)
- 拷贝id_rsa.pub文件在文本文件带有换行符,没关系,有无不影响
- known_hosts文件自动产生,当添加可信域名时写入值