一般来说,个人的git仓库是github或者gitee,但是企业内部一般结合工作流程使用不同的git仓库。
理所当然,此时,只有一个 ssh key 已经不能满足我们的要求——git哪里知道你要推送到哪个远程仓库。
因此,我们需要生成多个 ssh key.
创建文件
进入文件夹:cd ~/.ssh
,生成 ssh key:ssh-keygen -t rsa -C "your_email@gmail.com"
。
输入该命令后有连续的三个提示输入,第一个是你要创建的 ssh key 的文件名。我们就是通过第一个命令来创建不同的秘钥文件(如果不指定文件名会自动覆盖)。第二和第三次输入为秘钥口令,一般不填,直接回车。
这里我设置个人的公钥文件名为 id_rsa(默认文件名) ,公司的公钥文件名为 id_rsa_company 。这样就会根据公司邮箱和个人邮箱生成对应文件。
配置
找到 key 所在的地方(~/.ssh),创建 config 文件(无后缀),添加以下内容:
Host gitlab.com
IdentityFile ~/.ssh/id_rsa_company
User your_email@gmail.com
# 多个公钥可在后面继续添加其他配置
注意默认的 id_rsa 不需要配置。
字段 | 说明 |
---|---|
Host | 远程主机地址 |
IdentityFile | 私钥的文件路径及文件名称 |
User | 用户 |
Port | 远程主机上连接的端口号 |
HostName | 要登录的真实主机名。数字IP地址也是允许的 |
复制公钥到服务器
打开 github 或 gitlab 的设置,找到 SSH keys 配置项,然后将公钥文件中的内容复制到这里就 ok 了。
其他
一般来说,一台电脑要同时处理不用的 git 服务器,我们会使用不用的用户名。所以除了在初始化 git 时通过以下配置生成全局用户名和邮箱外,可能也需要在私有项目下配置项目下的用户名和邮箱,使用类似下面的命令,只是省略 --global
就可以了。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com