GitHub&Gitee&Gitlab&极狐(JihuLab)同时生成并配置SSH公私钥详细过程

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。

java 复制代码
$ git config --global user.name   "你的名字"
$ git config --global user.email  "你的邮箱"

可以使用下面的指令清除全局设置【推荐使用】

java 复制代码
$ 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公钥和私钥

java 复制代码
【此处邮箱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命令 即可,此处不再赘述。

GitHubGitee 对应过程,见我这篇文章中的:Git同时配置Gitee和GitHub两个不同的SSH-Key

二、 指定GitHub&Gitee&Gitlab&极狐的config私钥配置文件

因为是同时配置GitHub&Gitee&Gitlab&极狐(JihuLab)SSH公私钥,所以和只单独配置一个平台有所不同,为了避免混淆不同平台的SSH公私钥,需要在 ~/.ssh 目录【即C:\Users\用户名\.ssh目录】下新建一个config文件,添加如下内容(其中HostHostName填写git服务器的域名IdentityFile指定私钥的路径

java 复制代码
# 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)。(添加时会让你输入密码认证)

GitHubGitee 添加对应的公钥的过程,见我这篇文章:Git同时配置Gitee和GitHub两个不同的SSH-Key 二、生成SSH公钥 -4、添加对应的公钥到Gitee和GitHub。(添加时会让你输入密码认证)

3.1 Gitee中配置公钥gitee_id_rsa.pub

java 复制代码
//查看生成的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

java 复制代码
//查看生成的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

java 复制代码
//查看生成的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

java 复制代码
//查看生成的极狐(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。【表示确认添加主机到可信任列表】

java 复制代码
//检测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全局设置

bash 复制代码
git config --global user.name "GiHub用户名"
git config --global user.email "GitHub邮箱"
bash 复制代码
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全局设置

bash 复制代码
git config --global user.name "GiHub用户名"
git config --global user.email "GitHub邮箱"
bash 复制代码
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)

未推送README.md的Gitee仓库MyApplication


往Gitee仓库MyApplication推送README.md后的的命令截图

推送README.md后Gitee仓库MyApplication

6.1 创建README.md前

6.2 touch README.md

6.3 git add README.md

bash 复制代码
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"

git commit - m "代码提交信息"

代码提交信息相当于代码中的注释

执行完,会根据摘要算法(SHA1)生成一个不重复的40位提交ID字符串,默认只会显示7位唯一识别你的每一次提交,这里是731adec

6.5 git push -u origin "master"

这里之前第一次初始化仓库时,第6步,已经绑定过仓库,所以这里无需再绑定无需再执行 git remote add origin git@gitee.com:djcking/myapplication01.git直接push到远端仓库

注意
1 、这里的-u 参数,一般在第一次 push的时候使用,相当于建立某个本地分支(这里是master分支)对应的远端分支(orgin/master)的第一次联系。后面再push这个本地分支到远端仓库,就无需再加-u参数,直接执行git push origin "master"

2 、如果这个分支,是git pull下来的,修改后再push,也无需再加-u参数,直接执行git push -u origin "master",因为之前已经建立过这个本地分支与对应的远端分支之间的第一次联系pull到本地workspace,联系也会存在,后面再push这个本地分支到远端仓库,就无需再加-u参数,直接执行git push origin "master"

3、(来自《GitHub入门与实践》中的一些说明)

bash 复制代码
git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】


推送README.md后Gitee仓库MyApplication

本地仓库master远端仓库origin\master

命令行下查看:

bash 复制代码
//查看本地分支
git branch 

//查看所有分支(包含本地和远端)
git branch -a


图形化IDE下查看:

七、附自己写的其他相关博客

使用git命令行方式提交项目到GitHub
master分支与main分支的问题
5步将 GitHub 默认分支从 Master 更改为 Main(转载)

相关推荐
王解8 小时前
Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
单元测试·github
油泼辣子多加8 小时前
2024年11月4日Github流行趋势
github
Amelio_Ming9 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
梓羽玩Python9 小时前
推荐一款用了5年的全能下载神器:Motrix!全平台支持,不限速下载网盘文件就靠它!
程序员·开源·github
小牛itbull16 小时前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
A ?Charis1 天前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
鱼满满记1 天前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
梦魇梦狸º1 天前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
Diamond技术流1 天前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp
秋说1 天前
开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
gitlab·源代码管理