作用
由于大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,因此,系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个,否则无法访问。
生成步骤
- 检查SSH Keys是否存在
- 生成新的SSH Keys
- 将SSH Keys添加到Git服务器中(GitHub、GitLab、Coding、Phabricator等)
生成公钥的过程在所有操作系统上都差不多(本文是针对windows)。
首先,Windows下安装Git以后,打开Git Bash,输入:ls ~/.ssh
如果不存在则会提示文件或目录不存在,如下:
ls: cannot access '/c/Users/xxx/.ssh': No such file or directory
如果存在则会显示两个文件,如下:
id_rsa id_rsa.pub
关键是看有没有用 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub 后缀的文件就是公钥,另一个文件则是密钥。假如没有这些文件,或者连 .ssh 目录都没有,可以用ssh-keygen 来创建,该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在 MSysGit 包里:。
$ ssh-keygen -t rsa -C xxx@xxx.xxx
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa):
Created directory '/c/Users/xxx/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/xxx/.ssh/id_rsa.
Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxx/xxx xxx@xxx.xxx
The key's randomart image is:
+---[RSA 2048]----+
|O&@ +. |
|EO+B . |
|oo+. o . |
| o. o + |
|.o. + S |
|o+* * |
|O*.* . |
|*+o . |
|.... |
+----[SHA256]-----+
其中,ssh-keygen -t rsa -C xxx@xxx.xxx中的xxx@xxx.xxx为自己的邮箱。
输入命令后,它先要求你确认保存公钥的位置(.ssh/id_rsa),然后,它会让你输入密码两次,如果不需要密码,可以留空。得到的公钥大致如下:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== xxx@xxx.xxx
最后得到id_rsa.pub和id_rsa两个文件,其中,id_rsa.pub文件的内容即为公钥。将id_rsa.pub内容粘贴到Git服务器即可进行正常交互。