建站过程

  1. 1. 个人博客建站过程
    1. 1.1. 本地建站
    2. 1.2. 部署到GitHub
      1. 1.2.1. repo
      2. 1.2.2. token
      3. 1.2.3. 设置SSH
    3. 1.3. 问题
      1. 1.3.1. 测试SSH连接失败

个人博客建站过程

本站使用GitHub Pages + Hexo搭建,前情请申请git账号,安装git,node.js,hexo-cli等等,这里可以详见以下网址:

Hexo官网

知乎专栏

本地建站

跟着Hexo官网走:

1
2
3
hexo init <folder>
cd <folder>
npm install

这样,本地站点的初始化就完成了,下面可以在本地测试一下:

1
2
hexo g  //生成静态文件
hexo s //启动本地服务器 一般在http://localhost:4000/查看

这样的话,本地站点就搭建好了,下面就是本文重点,将本地站点部署到GitHub上。

部署到GitHub

部署是很简单的,在Hexo上面有着明确操作:

1
hexo deploy

就可以完成远程,但一些配置还是会显得复杂。
首先,需要在yml文件中准备部署的相关字段:

1
2
3
4
5
6
7
deploy:
type: git
repo:
# example, https://github.com/hexojs/hexojs.github.io
branch: master
token: ''
message:

如上,需要填写repo,branch,token,message字段。其中repo有几种方式,比如Https,SSH连接等等。但我使用Https出现连接超时的情况,所以后续都会使用SSH连接。

repo

这个很简单,找到创建的仓库,点击Code,复制SSH连接即可。

token

  1. 登录到您的 GitHub 帐户。
  2. 转到 GitHub 的 Settings(设置)页面。
  3. 在左侧导航栏中,选择 “Developer settings”(开发者设置)。
  4. 选择 “Personal access tokens”(个人访问令牌)。
  5. 点击 “Generate token”(生成令牌)。
  6. 提供一个描述,选择需要的权限。确保为 GitHub Pages 或相关存储库选择适当的权限。
  7. 点击 “Generate token” 完成生成。

以上来自chatGPT(笑)。
对于权限,确保以下两点一般够用:

  1. repo:这是一个组合权限,包括了对存储库的读写访问权限。
  2. delete_repo:确保不选择此权限,以防止删除存储库的权限。

设置SSH

接下来需要准备SSH,这里需要注意的是,如果你的电脑上已经有了SSH,那么就不需要再次生成,直接将公钥添加到GitHub即可。如果没有,那么就需要生成SSH。

  1. 生成 SSH 密钥: 如果您还没有 SSH 密钥对,请在终端中运行以下命令生成一个新的 SSH 密钥。确保您将您的电子邮件替换为您的 GitHub 邮箱地址。按照提示,选择默认位置保存密钥,并设置一个密码以增加安全性。
1
ssh-keygen -t rsa -b 4096 -C "<your_email@example.com>"
  1. 添加 SSH 密钥到 SSH 代理: 在生成 SSH 密钥后,您需要将其添加到 SSH 代理。运行以下命令:
1
2
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
  1. 添加 SSH 公钥到 GitHub: 打开生成的公钥文件(默认为 ~/.ssh/id_rsa.pub),并将其内容复制(很长一串,可以作为文本文件打开,全部复制)到您的 GitHub 帐户的 SSH 密钥设置中。这可以在 GitHub Settings -> SSH and GPG keys 中找到。

  2. 测试SSH连接,运行以下命令:

1
2
ssh -T git@github.com
//如果一切正常,您应该看到一条欢迎消息,表明连接成功
  1. 部署到GitHub,运行以下命令:
1
hexo deploy

问题

测试SSH连接失败

  1. 先测试可用性

ssh -T -p 443 git@ssh.github.com

如果是以Hi开头,说明可用;

  1. 编辑~/.ssh/config文件
1
2
3
Host github.com
Hostname ssh.github.com
Port 443
  1. 再次测试
1
2
ssh -T git@github.com
//回复 Hi *****! You've successfully authenticated, but GitHub does not provide shell access.