Git 客户端与服务器端的通信支持多种协议,其中SSH是最常用的。SSH的公钥登录流程:用户将自己的公钥存储在远程主机,登录时,远程主机会向用户发送一条消息,用户用自己的私钥加密后,再发给服务器。远程主机用事先存储的公钥进行解密,如果成功,就证明用户可信。
生成GitLab和GitHub的SSH
SSH生成命令
ssh-keygen -t rsa -C "注册 gitlab 账户的邮箱"
ssh-keygen -t rsa -C "注册 github 账户的邮箱"
注意SSH保存的地址,GitLab和GitHub的SSH文件名不同。
将两个.pub文件分别配置到GitLab和GitHub的ssh keys中。
编写config文件
由于本地调用私钥时默认使用 id_rsa,而我们是修改了名称的,所以要编写config文件,告诉本地调用哪个私钥。
创建config文件
touch ~/.ssh/config
文件内容
Host github.com
HostName github.com
User 任意名称
IdentityFile ~/.ssh/github_id_rsa
Host 公司GitLab的域名
HostName 公司GitLab的域名
User 任意名称
IdentityFile ~/.ssh/gitlab_id_rsa
创建本地仓库
在任意位置创建一个文件夹作为本地仓库,然后在该文件夹下进入git命令行界面。GitLab和GitHub各创建一个仓库。
本地配置
git init
git config --global user.name "注册GitLab的用户名"
git config --global user.email "注册GitLab的邮箱"
git init
git config --global user.name "注册GitHub的用户名"
git config --global user.email "注册GitHub的邮箱"
验证是否配置成功
GitHub
ssh -T git@github.com
第一执行会报错,不用管,然后输入yes后在.ssh目录下就多了一个文件 known_hosts
再验证下
GitLab
因为每个公司的GitLab域名不同,所以不能用GitHub的测试方法,可以通过clone一个项目来测试。