1.关于SSH

使用 SSH 协议可以连接远程服务器和服务并向它们验证。 利用 SSH 密钥可以连接 GitHub,而无需在每次访问时都提供用户名和个人访问令牌。

2.用git生成ssh秘钥pairs

  • $ ssh-keygen -t ed25519 -C "username@github.com",这一条命令就会在.ssh文件夹中生成两个秘钥(带pub后缀的是公钥,另一个是私钥)。
  • 之后和github连接了之后,.ssh文件夹中还会生成一个kown_hosts文件。

3.ssh私钥添加到SSH-agent中

  • 启动ssh-agent
1
2
3
start the ssh-agent in the background
$ eval `ssh-agent -s`
Agent pid 59566
  • 将私钥添加到agent中
    1
    $ ssh-add ~/.ssh/id_ed25519
  • 这样每次都要开agent并注入私钥,并不比直接输入账号密码简单,所以之后有一个方法,在开机就把私钥注入到agent中,免得手动配置了,详参步骤6。

4.ssh公钥新增到github中

  • 打开github->点击头像->settings->SSH & GPG keys
  • 复制.ssh中公钥内容,复制到ssh key中并保存。
  • 测试:ssh -vT git@github.com

5.修改root下_config.yml

将_config.yml文件中https方式改成ssh方式

1
2
3
4
5
6
deploy:
type: git
repo: https://github.com/<username>/<project>
example, https://github.com/hexojs/hexojs.github.io //https方式
example, git@github.com:username/username.github.io.git //ssh方式
branch: master

6.优化ssh-agent配置

  • 在windows系统自动启动ssh-agent
  • 代开git->etc->profile,添加下面代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env

7.成功

× 请我吃糖~
打赏二维码