github配置ssh key

配置ssh key,免密码提交代码至github

0x01:在本机生成ssh所需的公钥和私钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
user@user MINGW64 ~
$ cd ~

user@user MINGW64 ~
$ ssh-keygen -t rsa -C "hahaha9@gmail.com" -f ~/.ssh/PCWIN10(-f参数指定生成的密钥名称,也可以不指定,默认为id_rsa)
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):(这里需要输入密码,如果为空,提交的时候就不需要输入密码)
Enter same passphrase again:(重复刚刚的密码)
Your identification has been saved in PCWIN10.(生成的私钥)
Your public key has been saved in PCWIN10.pub.(生成的公钥,需要把这个文件中的内容提交到github上)
The key fingerprint is:
SHA256:IIhHNNc8fLREgPg1N+YEuQyUudsTHrtzY7f1yMMYjCM hahaha9@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
| .+ooBo*+ |
| o.+= O.*. |
|. o..=.X.. |
| . o.=.. |
| + +So |
| . E o o |
| + . +. |
| o + oooo |
| + o..o.. |
+----[SHA256]-----+

0x2:添加ssh key至github网站
image

0x3:将私钥添加到本地gitbash

1
2
3
$ ssh-agent bash --login -i
$ ssh-add ~/.ssh/PCWIN10(你自己的私钥的路径)

0x4:本地测试是否已经正常

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

已经认证成功。

0x4:将https提交类型的remote设置为ssh类型
查看当前本地仓库的远程仓库链接,发现是https类型的,提交代码的时候会要求输入github的帐号和密码,比较麻烦,我们将它改成ssh类型的,加上之前设置的ssh key,就可以实现免密码提交代码了。Let’s do it!

1
2
3
4
$ git remote -v
origin https://github.com/yourname/My_Blog.git (fetch)
origin https://github.com/yourname/My_Blog.git (push)

0x5:更改远程仓库链接为ssh类型

1
$ git remote set-url origin git@github.com:你的github用户名/你的远程仓库名.git

再次查看远程仓库链接

1
2
3
4
$ git remote -v
origin git@github.com:yourname/xxx.git (fetch)
origin git@github.com:xxxx/xxx.git (push)

0x6:在”~/.ssh”下新建一个名为config的配置文件,内容如下:

1
2
3
4
5
6
$ cat ~/.ssh/config
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/PCWIN10

0x7: 使用密钥来登录github进行操作,免除输入帐号,密码的麻烦。

1
2
3
4
5
$ ssh -T git@github.com
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.(测试通过,说明咱们已经成功利用ssh密钥登录了)

$ git push(提交一下本地的代码)

ps: ssh-agent

ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,ssh-agent其实就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。