Git使用SSH密钥

使用Git版本控制有两种Clone和Push方式:

  1. HTTPS
  2. SSH

下面分别介绍这两种方式

HTTPS

HTTPS只需要一个链接即可, 但是如果使用的是Git命令行则每次都需要输入账户和密码, 当然客户端可以不用每次输入, 因为一般Git客户端都自带账户保存功能.

SSH

SSH是非对称加密的形式进行账户验证, 非对称加密的安全性非常高. Git是支持SSH校验的.

一次设置后面都只需要在Git服务器部署公钥即可Clone Git版本控制了.

SSH包含两种密钥:

  1. 公钥

    负责加密, 通过名字即可知道是公开权限的密钥, 所以我们把公钥布置到Git服务器上.

  2. 私钥

    负责解密, 这是私有的密钥. 只存在于自己的电脑上

真是因为其加密和解密的密钥都不相同, 所以叫做非对称加密方式

生成密钥

会自动在~/.ssh创建目录(这是隐藏的目录), 一台电脑也对应一个SSH密钥对, Git服务器支持添加多个公钥所以不同的适配都能连接一个Git服务器账号的.

1
2
ssh-keygen -t rsa -f liangjingkanji-GitHub -C "xxxxx@xxxxx.com"
# ssh-rsa类型, ssh的文件名:"liangjingkanji-GitHub" 注释:"xxxxx@xxxxx.com",

其实也不需要上面那么多的参数

1
ssh-keygen -C "xxxxx@xxxxx.com"

默认就是RSA加密类型. 文件名默认即可

顺便说下我不推荐给SSH设置密码. 因为设置密码后会导致每次操作都需要输入密码. 并且某些客户端会导致无法Clone仓库. 因为他们是图形化工具不会弹出输入密码的提示.

.pub后缀的就是公钥

对应没有后缀的文件就是私钥.

打开公钥文件的内容就可以复制到Git服务器上了. 然后你电脑使用SSH方式Clone仓库无需进行任何操作了.

注意大小写<-C而不是-c>

例如给GitHub添加公钥:

SourceTree

SourceTree 支持Windows和Mac平台所以我也一直在用这个进行版本控制. SourceTree也是支持生成SSH密钥的. 并且如果SourceTree想要添加SSH链接的Git地址必须用SourceTree创建SSH密钥, 否则会提示链接无效.

  1. 设置-账户

  1. 选择编辑..

协议选择SSH就在自己的电脑上创建SSH密钥对了.