每次写完博客,提交、部署到GitHub上的时候,会要求输入账户名和密码,我们可以通过设置SSH密钥以实现免密部署,来提高生产效率。
原理
由于每次部署时GitHub都要确定用户是否为安全用户,所以要求输入账户名和密码。而SSH就保证了这样的安全。
SSH是一种网络协议,用于计算机之间的加密登录。一般生成的是id_rsa
和id_rsa.pub
,一个私钥和一个公钥。
原理就是将公钥储存到远端主机,私钥储存在本地,登录时远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
检查现有的SSH密钥
打开Git Bash。输入:
1 | ls -al ~/.ssh |
查看是否存在SSH密钥,若没有,则生成一个新的SSH密钥。
生成SSH密钥
1 | ssh-keygen -t rsa -C "GitHub邮箱地址" |
为了方便,回车三连。
根据文件的生成路径,找到.ssh文件夹,打开目录下的id_rsa.pub
,复制里面的所有内容。
将SSH密钥添加到GitHub账户
右上角点击个人资料照片,点击Setting
在用户设置边栏找到SSH and GPG keys
,点击New SSH key
。
Title
字段可自行命名一个描述性标签,并在Key
中粘贴刚刚所复制内容,点击点击Add SSH key
。
测试SSH密钥的连接
回到Git bash,输入:
1 | ssh -T git@github.com |
首次输入可能会看到警告,键入yes
即可。
成功会返回验证消息:
1 | Hi username! You've successfully authenticated, but GitHub does not provide shell access. |
修改站点配置文件_config.yml
1 | deploy: |
这样SSH密钥便设置成功啦!