GitHub-微软-github.com
Gitee-开源中国- gitee.com
Gitlab-乌克兰GitLab 公司-gitlab.com
极狐(JihuLab)-中国代理商运营的Gitlab -gitlab.cn或者jihulab.com
使用SSH公钥可以让你在你的电脑和GitHub等平台通讯的时候使用更安全的连接(Git的Remote
要使用SSH地址
,例如git@gitee.com:king/example.git
),但速度没有HTTPS
(例如https://gitee.com/king/example.git
)快。今天就来学习一下使用SSH公钥让电脑和GitHub等平台通讯的时候,使用安全连接配置的详细过程
。
一、生成SSH公钥和私钥
1.1 取消全局设置
如果曾经直接在TortoiseGit设置过或者使用过下面的指令设置过全局的 user.name 和 user.email。
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"
可以使用下面的指令清除全局设置【推荐使用】
$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"
用 git config --global --list指令查看你是否清除全局设置成功:如果没有出现user和email,那就代表全局设置清除成功。
1.2 生成SSH公钥和私钥
ssh-keygen命令中指定私钥名称后,会同时生成是一对SSH公钥和私钥,带有.pub后缀的是公钥。
例如,gitee_id_rsa就是私钥,gitee_id_rsa.pub就是公钥。
1、私钥gitee_id_rsa位置在config文件中配置,由开发者手动ssh-keygen命令执行生成后,存放在本地机器~/.ssh 目录【C:\Users\用户名\.ssh】目录中。私钥是用户的身份证,唯一识别用户,小心保管,不要泄露。
2、公钥gitee_id_rsa.pub配置到对应的代码托管平台(例如GitHub&Gitee&Gitlab&极狐(JihuLab)中。
3、提交代码时,通过校验对应的SSH公私钥,确认用户身份和提交的平台。
生成SSH公钥和私钥
【此处邮箱123456@qq.com不是默认,要修改成开发者个人配置的】
1、生成一个Gitee用的SSH-Key。
ssh-keygen -t rsa -C ‘123456@qq.com’ -f ~/.ssh/gitee_id_rsa
2、生成一个GitHub用的SSH-Key。
ssh-keygen -t rsa -C ‘123456@qq.com’ -f ~/.ssh/github_id_rsa
3、生成一个GitLab用的SSH-Key。
ssh-keygen -t rsa -C '123456@qq.com' -f ~/.ssh/gitlab_en_id_rsa
4、生成一个极狐(JihuLab)用的SSH-Key
ssh-keygen -t rsa -C '123456@qq.com' -f ~/.ssh/gitlab_id_rsa
注意输入生成SSH-key指令后,需要按回车3次,表示empty,即“空”,“空”代表没有密码。
ssh-keygen命令中的rsa是一种生成密钥的算法,也可以根据需求更换其他算法来生成 ssh key。
例如ssh-keygen -t ed25519 -C "your@example.email" 这里使用的就是ed25519算法, 之后到对应平台重新添加公钥即可
1.3 生成GitLab的SSH公私钥的过程截图(其他平台把ssh-keygen命令更换即可)
1.4 私钥gitee_id_rsa与公钥gitee_id_rsa.pub的内容
私钥gitee_id_rsa
公钥gitee_id_rsa.pub
1.5 GitHub&Gitee&Gitlab&极狐(JihuLab)最后生成的SSH公钥和私钥
同理,GitHub、Gitee、极狐(JihuLab)也是重复上述同样的过程,更换对应平台的ssh-keygen命令即可,此处不再赘述。
GitHub和Gitee对应过程,见我这篇文章中的:Git同时配置Gitee和GitHub两个不同的SSH-Key 。
二、 指定GitHub&Gitee&Gitlab&极狐的config私钥配置文件
因为是同时配置GitHub
&Gitee
&Gitlab
&极狐(JihuLab)
的SSH公私钥
,所以和只单独配置一个平台有所不同,为了避免混淆不同平台的SSH公私钥
,需要在 ~/.ssh
目录【即C:\Users\用户名\.ssh目录】
下新建一个config
文件,添加如下内容(其中Host
和HostName
填写git服务器的域名
,IdentityFile
指定私钥的路径
)
# github
# ssh -T git@github.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
#2023-3-3 00:57:06
# gitee
# ssh -T git@gitee.com
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
#极狐第一种
#2023-4-5 22:37:31 jihulab
#ssh -T git@gitlab.cn
Host gitlab.cn
Hostname altssh.jihulab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
#极狐第二种
#2023-4-5 22:37:31 jihulab
#ssh -T git@jihulab.com
Host jihulab.com
Hostname altssh.jihulab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
#2023-4-6 01:00:05
#ssh -T git@gitlab.com
#gitlab
Host gitlab.com
HostName gitlab.com
#User git
#Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_en_id_rsa
三、添加对应的公钥到GitHub&Gitee&Gitlab&极狐(JihuLab)。(添加时会让你输入密码认证)
GitHub和Gitee添加对应的公钥的过程,见我这篇文章:Git同时配置Gitee和GitHub两个不同的SSH-Key 二、生成SSH公钥-4、添加对应的公钥到Gitee和GitHub。(添加时会让你输入密码认证)
3.1 Gitee中配置公钥gitee_id_rsa.pub
//查看生成的Gitee公钥gitee_id_rsa.pub,复制Gitee公钥gitee_id_rsa.pub
//或者直接去C:\Users\用户名\.ssh目录下直接用文本编辑器打开Gitee公钥gitee_id_rsa.pub,复制Gitee公钥gitee_id_rsa.pub的内容
cat ~/.ssh/gitee_id_rsa.pub
复制该Gitee公钥gitee_id_rsa.pub:
点击账号设置
添写标题和Gitee公钥gitee_id_rsa.pub内容后点击确定,后输入密码认证:
添加成功:
3.2 GitHub中配置公钥github_id_rsa.pub
//查看生成的GitHub公钥github_id_rsa.pub,复制GitHub公钥github_id_rsa.pub
cat ~/.ssh/github_id_rsa.pub
点击Settings
点击New SSH Key
输入标题&复制粘贴公钥github_id_rsa.pub的内容&点击Add SSH Key
3.3 Gitlab中配置公钥gitlab_en_id_rsa.pub
//查看生成的Gitlab公钥gitlab_en_id_rsa.pub,复制Gitlab公钥gitlab_en_id_rsa.pub
cat ~/.ssh/gitlab_en_id_rsa.pub
点击Preferences
点击SSH Keys
点击Add new key
填写 Gitlab公钥gitlab_en_id_rsa.pub相关信息后点击Add key:
3.4 极狐(JihuLab)中配置公钥gitlab_id_rsa.pub
//查看生成的极狐(JihuLab)公钥gitlab_id_rsa.pub,复制极狐(JihuLab)公钥gitlab_id_rsa.pub
cat ~/.ssh/gitlab_id_rsa.pub
点击偏好设置
点击SSH密钥
点击添加新密钥
填写密钥-标题-使用类型-到期时间等信息后-点击添加密钥
四、检测是否配置成功
4.1 检测命令
首次使用,会出现Are you sure you want to continue connecting(yes/no/[fingerprint] ?时 输入yes。【表示确认添加主机到可信任列表】
//检测GitHub
ssh -T git@github.com
//检测gitee
ssh -T git@gitee.com
//检测极狐(JihuLab)【中国代理商运营的Gitlab】
ssh -T git@gitlab.cn
或
ssh -T git@jihulab.com
//检测Gitlab
ssh -T git@gitlab.com
4.2 检测命令执行成功截图
五、Git的SSH与HTTPS方式的命令行入门教程
注:SSH的git@gitee.com:djcking/myapplication01.git
和HTTPShttps://gitee.com/djcking/myapplication01.git
直接从仓库中点击复制粘贴使用即可,以哪种方式配置,就复制使用哪一种。
5.1 SSH(配合上面的教程使用)
Git全局设置
git config --global user.name "GiHub用户名"
git config --global user.email "GitHub邮箱"
a:还没有git仓库,创建 git 仓库(此处以myapplication01仓库为例):
//1-创建myapplication01仓库
mkdir myapplication01
//2-进入myapplication01
cd myapplication01
//3-初始化仓库
git init
//3-创建README.md文件
touch README.md
//4-add README.md
git add README.md
//5-commit
git commit -m "first commit"
//6-绑定远端仓库
git remote add origin git@gitee.com:djcking/myapplication01.git
//7-推送到远端origin的master分支
git push -u origin "master"
或者
git push -u origin main
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】
b:已有git仓库:
//1-进入已经存在的git仓库(此处以myapplication01仓库为例)
//cd existing_git_repo
cd myapplication01
//2-绑定远端仓库
git remote add origin git@gitee.com:djcking/myapplication01.git
3-推送到远端origin的master分支
git push -u origin "master"
或者
git push -u origin main
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】
更简单的使用方式
:直接建远端仓库后
,clone到本地
,无需
初始化(git init)和绑定仓库(git remote add origin),可以直接使用。
5.2 HTTPS(需以HTTPS方式配置使用Git)
Git全局设置
git config --global user.name "GiHub用户名"
git config --global user.email "GitHub邮箱"
a:还没有git仓库,创建 git 仓库(此处以myapplication01仓库为例):
//1-创建myapplication01仓库
mkdir myapplication01
//2-进入myapplication01
cd myapplication01
//3-初始化仓库
git init
//3-创建README.md文件
touch README.md
//4-add README.md
git add README.md
//5-commit
git commit -m "first commit"
//6-绑定远端仓库
git remote add origin https://gitee.com/djcking/myapplication01.git
//7-推送到远端origin的master分支
git push -u origin "master"
或者
git push -u origin main
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】
b:已有git仓库:
//1-进入已经存在的git仓库(此处以myapplication01仓库为例)
//cd existing_git_repo
cd myapplication01
//2-绑定远端仓库
git remote add origin https://gitee.com/djcking/myapplication01.git
//3-推送到远端origin的master分支
git push -u origin "master"
或者
git push -u origin main
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】
更简单的使用方式
:直接建远端仓库后
,clone到本地
,无需
初始化(git init)和绑定仓库(git remote add origin),可以直接使用。
六、Git命令行方式增加文件README.md(SSH)
6.1 创建README.md前
6.2 touch README.md
6.3 git add README.md
git add 命令可将该文件的修改添加到暂存区。
通过运行 git add 命令,你可以告诉 Git 哪些文件的修改应该包含在下一次提交(commit)中。
将文件从workdir(工作目录)中添加到缓存区index(即暂存区stage)(出现红色感叹号)
//*表示所有文件
git add *
//.表示当前目录下的所有文件
git add .
//也可以直接添加目录
git add 目录名
//添加一个或多个文件
git add 文件1名 文件2名
//强制提交某个文件(不管.gitignore是否包含了这个文件)
//.gitignore文件是用来配置 忽略不需要上传的文件 的文件
git add -f 文件名
6.4 git commit -m “add README.md”
执行完,会根据算法生成一个41位字符串
,默认只会显示7位
,唯一识别你的每一次提交
,这里是731adec
,。
6.5 git push -u origin “master”
这里之前第一次初始化仓库时,第6步,已经绑定过仓库
,所以这里无需再绑定
,无需再执行git remote add origin git@gitee.com:djcking/myapplication01.git
,直接push到远端仓库
。
git push -u origin master
或者
git push -u origin main
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】
七、附自己写的其他相关博客
使用git命令行方式提交项目到GitHub
master分支与main分支的问题
5步将 GitHub 默认分支从 Master 更改为 Main(转载)