我们从gitlab拉去代码通常有以下两种方式
http(s):会要求输入密码,可以选择将密码保存到本地,这样就会将密码持久化到本地。这也是最简单的一种方式,但这需要交互,而且密码直接存储在本地也不够安全。
ssh:使用ssh,通过公私钥授权git服务器的方式,不用输入密码
本文就记录一下生成及配置的过程
- 生成公私钥
$ ssh-keygen -t rsa -C "mw" -f ~/.ssh/gitee_id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/NINGMEI/.ssh/gitee_id_rsa.
Your public key has been saved in /c/Users/NINGMEI/.ssh/gitee_id_rsa.pub.
The key fingerprint is:
SHA256:BSptyjUpG+NeLDj2S5LP1QLJELpLkk6Ihob37uGek/I mw
The key's randomart image is:
+---[RSA 2048]----+
| . . |
| . . . o . |
|. . = B . |
|=o * % . . |
|O== X o S |
|B+ * + . |
|..o *.o . |
| .Bo= . |
| =E. |
+----[SHA256]-----+
这里有个点需要说明
-f ~/.ssh/gitee_id_rsa:指定生成文件的名称(后续有用到,默认的名称为 id_rsa)
将公钥上传至被登录的服务器,目录为 ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.104
-
git仓库配置ssh公钥
-
测试ssh连接
$ ssh -T -i ~/.ssh/gitee_id_rsa git@gitee.com
The authenticity of host 'gitee.com (180.97.125.228)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
输入 yes
Warning: Permanently added 'gitee.com,180.97.125.228' (ECDSA) to the list of known hosts.
Hi xxxxx! You've successfully authenticated, but GITEE.COM does not provide shell access.
-i 指定密钥文件(如未自定义名称,可省略)
-p 指定ssh端口 (默认22,未修改可省略)
也可以采用以下方式配置
在.ssh目录下新建文件 config,加入
# gitee
Host gitee.com #git ssh 连接时的名称
HostName gitee.com #服务器ip或域名
IdentityFile ~/.ssh/gitee_id_rsa #私钥文件位置
此时就可以省略 -i 参数了
- 测试拉取代码
弹出这个对话框就说明已经成功了
后续就可普通检出项目一样了。