git 作为当前最受欢迎的版本控制软件,使用是很频繁的。但是…

git 作为当前最受欢迎的版本控制软件,使用是很频繁的。但是有的小伙伴发现每次使用 git push 等操作时都要输入密码,实在是麻烦。这里对使用 SSH 与 HTTPS 两种通讯协议介绍一下免密码配置


一、本地Git基本信息配置

本地Git用户名、邮箱等基本信息配置

i. 查看

验证『当前本地』是否已配置账号信息

$ git config --list # 查看所有
$ git config --global  --list # 查看当前用户(global)配置
$ git config --system  --list # 查看系统config
$ git config --local  --list # 查看当前仓库配置信息

# 查看指定信息
$ git config user.name
$ git config user.email

ii. 增删改

第一次配置,需要设置Gituser nameemail

# 新增或覆盖
$ git config --global user.name "lian" # you name
$ git config --global user.email "lian@foxmail.com" # you email

# 替换
$  git config --global --replace-all user.name "yourName"
$  git config --global --replace-all user.email "your@email.com"

# 删除
$ git config --global --unset user.name "yourName"
$ git config --global --unset user.email "your@email.com"

二、ssh keyhttps差异

  • clone项目: 使用ssh方式时,首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key。而对于使用https方式来讲,就没有这些要求。
  • push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则需要验证密码。而对于使用https方式来讲,每次push都需要验证用户名和密码。

三、配置ssh key

1. 单个ssh key生成及配置

1.1 生成密钥

ssh-keygen程序在Linux/Mac系统上由SSH包提供,而在Windows上则包含在MSysGit包里

$ ssh-keygen -t rsa -C "lian@foxmail.com"

直接Enter,会提示你输入密码,如下(可不输,建议输入,安全性更高):

Enter same passphrase again: [Type passphrase again]

『本地的密钥对』生成完成提示:

Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db lian@foxmail.com

得到两个文件:id_rsaid_rsa.pub。不是第一次,则选择overwrite

1.2 检查是否存在ssh key

$ cd ~/.ssh
$ cd ~/.ssh && ls # 进入且查看
  • id_rsa:密钥
  • id_rsa.pub:有.pub后缀的文件就是公钥,另一个文件则是。

1.3 添加公钥到远程仓库(github、gitLab 等)

查看公钥

$ cat ~/.ssh/id_rsa.pub

ssh-rsa
AAAAB3NzaC1yc2EAAAAAQC0X6L1zLL4VHuvGb8aJH3ippTozmReSUzgntvk434aJ
...
6J0GFlBVQeTE/IGqhMS5PMln3 lian@foxmail.com

添加公钥到远程仓库
gitHub为例,登录进入个人中心,打开Settings -> SSH Keys,复制公钥内容到『key文本域』内

如果公钥复制正确, 『title域』会自动将you email代入, 便于标识,你可以修改为其他的名字

ssh命令分别测试

ssh -T git@github.com

2. 多个SSH-Key配置

当有多个『git账号』时,比如:一个gitLab,用于公司内的工作开发。一个github,用于个人的一些开发方向。

2.1 生成ssh key

# 生成一个gitlab用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/id_rsa_gitlab

# 生成一个github用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/id_rsa_github

2.2 生成config配置文件

~/.ssh目录下新建一个config文件

$ cd ~/.ssh
# 为.ssh目录设置权限
.ssh $ chmod 600 ~/.ssh/config

config文件,添加如下内容:

  • HostHostName填写git服务器的域名
  • IdentityFile指定私钥的路径
# gitLab
Host gitLab.com
HostName gitLab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github

2.3 用ssh命令分别测试

$ ssh -T git@gitLab.com
$ ssh -T git@github.com

gitHub为例,成功返回如下内容:

$ ssh -T git@github.com
Hi lianpf! You've successfully authenticated, but GitHub does not provide shell access.

四、HTTPS 通信协议

待更新…g


最后, 希望大家早日实现:成为编程高手的伟大梦想!
欢迎交流~

微信公众号