赞
踩
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等平台通讯的时候,使用安全连接配置的详细过程
。
最新文章(2023-9-19 20:58:21)
:解决ssh:connect to host github.com port 22: Connection timed out与kex_exchange_identification
master分支与main分支的问题
使用git命令行方式提交项目到GitHub
如果曾经直接在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,那就代表全局设置清除成功。
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算法, 之后到对应平台重新添加公钥即可
注意
:如果在此处设置了密码,则在 4.1 检测命令
中输入ssh -t
命令 检测配置是否成功时,也需要输入此密码才能检测,所以此口令密码要记住,否则就完蛋了。
私钥gitee_id_rsa
公钥gitee_id_rsa.pub
同理,GitHub、Gitee、极狐(JihuLab)也是重复上述同样的过程,更换对应平台的ssh-keygen命令即可,此处不再赘述。
GitHub和Gitee对应过程,见我这篇文章中的:Git同时配置Gitee和GitHub两个不同的SSH-Key 。
因为是同时配置GitHub
&Gitee
&Gitlab
&极狐(JihuLab)
的SSH公私钥
,所以和只单独配置一个平台有所不同,为了避免混淆不同平台的SSH公私钥
,需要在 ~/.ssh
目录【即C:\Users\用户名\.ssh目录】
下新建一个config
文件,添加如下内容(其中Host
和HostName
填写git服务器的域名
,IdentityFile
指定私钥的路径
)
config
中配置时,如果没有指定端口,默认使用22端口
,进行SSH连接,也可以修改成443端口
,#符号是注释
的意思,不起实际作用,方便阅读理解
。
注意
:GitHub端口 443 的主机名Hostname
为 ssh.github.com
,而不是 github.com
。
# github
# ssh -T git@github.com
Port 443
Hostname ssh.github.com
Host github.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
此处我的config文件
,参考时需要根据个人机器实际配置情况
,进行部分修改
,例如私钥位置名称IdentityFile
。
# github
# ssh -T git@github.com
#Port 443
#Hostname ssh.github.com
User git
#Port 22 此处注释,默认也使用22端口
#Host github.com 2023-12-7 00:38:35 注释
Host github.com UpdateHostKeys yes
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
#2023-3-3 00:57:06
# gitee
#ssh-keygen -t rsa -C ‘123456@qq.com’ -f ~/.ssh/gitee_id_rsa
# 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-keygen -t rsa -C '123456@qq.com' -f ~/.ssh/gitlab_id_rsa
#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-keygen -t rsa -C '123456@qq.com' -f ~/.ssh/gitlab_id_rsa
#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-keygen -t rsa -C '123456@qq.com' -f ~/.ssh/gitlab_en_id_rsa
#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添加对应的公钥的过程,见我这篇文章:Git同时配置Gitee和GitHub两个不同的SSH-Key 二、生成SSH公钥-4、添加对应的公钥到Gitee和GitHub。(添加时会让你输入密码认证)
//查看生成的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内容后点击确定,后输入密码认证:
添加成功:
//查看生成的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
//查看生成的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:
//查看生成的极狐(JihuLab)公钥gitlab_id_rsa.pub,复制极狐(JihuLab)公钥gitlab_id_rsa.pub
cat ~/.ssh/gitlab_id_rsa.pub
点击偏好设置
点击SSH密钥
点击添加新密钥
填写密钥-标题-使用类型-到期时间等信息后-点击添加密钥
首次使用,会出现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
注:SSH的git@gitee.com:djcking/myapplication01.git
和HTTPShttps://gitee.com/djcking/myapplication01.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@gitee.com: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.com:djcking/myapplication01.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全局设置
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分支,带-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 https://gitee.com/djcking/myapplication01.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),可以直接使用。
未推送README.md的Gitee仓库MyApplication
往Gitee仓库MyApplication
推送README.md后
的的命令截图
推送README.md后
的Gitee仓库MyApplication
git add 命令可将该文件的修改添加到暂存区。
通过运行 git add 命令,你可以告诉 Git 哪些文件的修改应该包含在下一次提交(commit)中。
将文件从workdir(工作目录)中添加到缓存区index(即暂存区stage)(出现红色感叹号)
//*表示所有文件
git add *
//.表示当前目录下的所有文件
git add .
//也可以直接添加目录
git add 目录名
//添加一个或多个文件
git add 文件1名 文件2名
//强制提交某个文件(不管.gitignore是否包含了这个文件)
//.gitignore文件是用来配置 忽略不需要上传的文件 的文件
git add -f 文件名
git commit - m
“代码提交信息
”
代码提交信息
相当于代码中的注释
。
执行完,会根据摘要算法(SHA1)生成一个不重复的40位提交ID字符串
,默认只会显示7位
,唯一识别你的每一次提交
,这里是731adec
。
这里之前第一次初始化仓库时,第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
。
git push -u origin main
的情况同理
。
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(转载)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。