1,描述
一般情况下使用HTTPS以及SSH方式都可以从远程分支clone克隆代码到本地环境。
但是HTTPS的方式因为不存在密钥因此就会存在每次提交或者是push代码时就会存在输入密码的问题。这对于开发过称比较繁琐,因此就诞生了SSH方式clone以及commit和push代码的方式。
2,SSH密钥的生成过程
在终端环境下执行ls ~/.ssh就可以查看当前文件目录下是否存在SSH密钥生成的id_rsa以及id_rsa.pub两个文件。假如两个文件存在那么就可以确定本地用户已经生成了SSH密钥。如果不存在这两个文件那么就要执行以下命令来生成gitlab账号(邮箱号码)的SSH密钥。
指令:ssh-keygen -t rsa -C "3083764030@qq.com"。
输入完指令之后,第一次生成的话,直接一路回车,不需要输入密码。不是第一次生成的话,会提示 overwrite (y/n)? 问你是否覆盖旧之前生成的 SSH Key ,直接填 y ,然后一直回车就行了,出现如下图就代表 SSH Key 已经生成。
生成之后那么在.ssh文件夹之下就会存在id_rsa以及id_rsa.pub
其中在id_rsa这个文件之下存在就是SSH key的私钥。而在id_rsa.pub
这个文件之下存在的就是公钥。公钥就可以往远程仓库提交而私钥只能往ssh-agent添加。
(3)私钥往ssh-agent添加流程
1,输入以下,命令就可以打开ssh-agent
eval "$(ssh-agent -s)"。 然后输入以下命令ssh-add ~/.ssh/id_rsa添加进入。
(4)将公钥添加到远程仓库
一般情况下就是使用文本编辑器对id_rsa.pub文件的内容进行复制然后粘贴到gitlab的个人设置之中添加公钥就可以了。
注意: ~/.ssh这个文件夹是默认隐藏的,如果找不到的话可以使用以下命令,直接复制 id_rsa.pub 中的内容。
/* macOS 系统 */
pbcopy < ~/.ssh/id_rsa.pub
/* windows 系统 */
clip < ~/.ssh/id_rsa.pub
/* Linux 系统 */
sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub
这样子就可以解决问题了,一般情况下一台主机只能生成一个SSH key密钥,但是我们可以在不同的仓库使用同一个SSH操作(就是我们可以在不同的远程Git仓库都添加同一个SSH),不存在任何的问题。