GitHubGiteeGitlab极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程

编程入门 行业动态 更新时间:2024-10-18 19:30:11

GitHubGiteeGitlab极狐(JihuLab)同时生成并配置和检测不同SSH<a href=https://www.elefans.com/category/jswz/34/1760319.html style=公私钥详细过程"/>

GitHubGiteeGitlab极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程

GitHub-微软-github
Gitee-开源中国- gitee
Gitlab-乌克兰GitLab 公司-gitlab
极狐(JihuLab)-中国代理商运营的Gitlab -gitlab或者jihulab

使用SSH公钥可以让你在你的电脑和GitHub等平台通讯的时候使用更安全的连接Git的Remote要使用SSH地址,例如git@gitee:king/example.git),但速度没有HTTPS(例如.git)快。今天就来学习一下使用SSH公钥让电脑和GitHub等平台通讯的时候,使用安全连接配置的详细过程

最新文章(2023-9-19 20:58:21):解决ssh:connect to host github port 22: Connection timed out与kex_exchange_identification

一、生成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不是默认,要修改成开发者个人配置的】
1、生成一个Gitee用的SSH-Key。
ssh-keygen -t rsa -C ‘123456@qq’ -f ~/.ssh/gitee_id_rsa2、生成一个GitHub用的SSH-Key。
ssh-keygen -t rsa -C ‘123456@qq’ -f ~/.ssh/github_id_rsa3、生成一个GitLab用的SSH-Key。
ssh-keygen -t rsa -C '123456@qq' -f ~/.ssh/gitlab_en_id_rsa4、生成一个极狐(JihuLab)用的SSH-Key
ssh-keygen -t rsa -C '123456@qq' -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命令更换即可)

注意:如果在此处设置了密码,则在 4.1 检测命令中输入ssh -t命令 检测配置是否成功时,也需要输入此密码才能检测,所以此口令密码要记住,否则就完蛋了。

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指定私钥的路径

config中配置时,如果没有指定端口,默认使用22端口,进行SSH连接,也可以修改成443端口#符号注释的意思,不起实际作用,方便阅读理解

注意:GitHub端口 443 的主机名Hostnamessh.github,而不是 github

# github
# ssh -T git@github
Port 443   
Hostname ssh.github
Host github
Hostname ssh.github
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

此处我的config文件,参考时需要根据个人机器实际配置情况,进行部分修改,例如私钥位置名称IdentityFile

# github
# ssh -T git@github
#Port 443   
#Hostname ssh.githubUser git
#Port 22  此处注释,默认也使用22端口
Host githubHostname githubPreferredAuthentications publickeyIdentityFile ~/.ssh/github_id_rsa#2023-3-3 00:57:06
# gitee
#ssh-keygen -t rsa -C ‘123456@qq’ -f ~/.ssh/gitee_id_rsa
# ssh -T git@gitee
Host giteeHostname giteePreferredAuthentications publickeyIdentityFile ~/.ssh/gitee_id_rsa#极狐第一种
#2023-4-5 22:37:31  jihulab
#ssh-keygen -t rsa -C '123456@qq' -f ~/.ssh/gitlab_id_rsa
#ssh -T git@gitlab
Host gitlabHostname altssh.jihulabUser gitPort 443PreferredAuthentications publickeyIdentityFile ~/.ssh/gitlab_id_rsa#极狐第二种
#2023-4-5 22:37:31  jihulab
#ssh-keygen -t rsa -C '123456@qq' -f ~/.ssh/gitlab_id_rsa
#ssh -T git@jihulab
Host jihulabHostname altssh.jihulabUser gitPort 443PreferredAuthentications publickeyIdentityFile ~/.ssh/gitlab_id_rsa#2023-4-6 01:00:05
#ssh-keygen -t rsa -C '123456@qq' -f ~/.ssh/gitlab_en_id_rsa
#ssh -T git@gitlab
#gitlab 
Host gitlabHostname gitlab#User git#Port 443PreferredAuthentications publickeyIdentityFile ~/.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

//查看生成的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//检测gitee
ssh -T git@gitee//检测极狐(JihuLab)【中国代理商运营的Gitlab】
ssh -T git@gitlab
或
ssh -T git@jihulab//检测Gitlab
ssh -T git@gitlab

4.2 检测命令执行成功截图


五、Git的SSH与HTTPS方式的命令行入门教程

:SSH的git@gitee:djcking/myapplication01.git和HTTPS.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:djcking/myapplication01.git//7-首次推送到远端origin的master分支,带-u参数
git push -u origin "master"  或者 git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】//后续再推送,不需要再带-u参数
git push  origin "master" 或者 git push  origin master
或者
git push  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:djcking/myapplication01.git3-首次推送到远端origin的master分支,带-u参数
git push -u origin "master"   或者 git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】//后续再推送,不需要再带-u参数
git push  origin "master" 或者 git push  origin master
或者
git push  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 .git//7-首次推送到远端origin的master分支,带-u参数
git push -u origin "master"  或者 git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】//后续再推送,不需要再带-u参数
git push  origin "master" 或者 git push  origin master
或者
git push  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//3-首次推送到远端origin的master分支,带-u参数
git push -u origin "master"  或者 git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】//后续再推送,不需要再带-u参数
git push  origin "master" 或者 git push  origin master
或者
git push  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

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” 首次推送带-u参数

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

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

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

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

//首次推送到远端origin的master分支,带-u参数
git push -u origin "master" 或者 git push -u origin master
或者
git push -u origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】//后续再推送,不需要再带-u参数
git push  origin "master" 或者 git push  origin master
或者
git push  origin main 
【因为GitHub之前的默认分支一直就是master,但2020年10月后GitHub宣布:新建项目的默认分支将从
master逐步改为main。】


推送README.md后Gitee仓库MyApplication

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

命令行下查看:

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


图形化IDE下查看:

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

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

参考
测试 SSH 连接
在 HTTPS 端口使用 SSH

更多推荐

GitHubGiteeGitlab极狐(JihuLab)同时生成并配置和检测不同SSH公私钥详细过程

本文发布于:2024-03-23 16:42:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740454.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:公私   过程   详细   极狐   GitHubGiteeGitlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!