【博客】Hexo搭建个人博客出现 Invalid username or password问题

GitHub开启二次验证后会导致博客提交hexo deploy的时候密码错误,无法提交至GitHub。具体提示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': username
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/username.github.io.git/'
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (D:\Mine\blog\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (events.js:315:20)
at ChildProcess.cp.emit (D:\Mine\blog\node_modules\cross-spawn\lib\enoent.js:34:29)
at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12) {
code: 128
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

这是由于在GitHub中开启了 Two-factor authentication(二次验证)导致。

网上搜到的通常有两种解决办法,一种是关闭二次验证,还有一种是生成 Personal access tokens 令牌码,使用该码作为密码登录。这里我选择的是第二种方法,原因:

  • 开启二次验证虽然在某些时候增加了一些麻烦,但是极大的提高了账户的安全性,我觉得这是值得的

  • 使用第二种方法之后,在后面的博客创作过程中如果再次用到hexo deploy命令则不需要再重复输入用户名和密码

创建个人访问令牌:

  1. 如果github帐号尚未验证电子邮箱地址,则需要验证电子邮件地址。

  2. 登录github后,在任何页面的右上角单击个人资料照片,然后单击Settings(设置)

  1. 在左侧边栏中,单击Developer settings

  1. 在左侧边栏中,单击 Personal access tokens(个人访问令牌)

  1. 单击 Generate new token(生成新令牌)

  1. 给令牌一个描述性名称。

  1. 选择要授予此令牌的作用域或权限。 要使用令牌从命令行访问仓库,请选择 repo(仓库)

  1. 单击 Generate token(生成令牌)

  1. 单击复制小按钮将令牌复制到剪贴板。 出于安全原因,离开此页面后,您将无法再次看到令牌

警告: 像对待密码一样对待您的令牌,确保其机密性。 使用 API 时,应将令牌用作环境变量,而不是将其硬编码到程序中。

如果您有令牌,则可以在通过 HTTPS 执行 Git 操作时输入令牌,而不是密码。例如,在命令行中输入以下内容:

1
2
3
$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

个人访问令牌只能用于 HTTPS Git 操作。 如果您的仓库使用 SSH 远程 URL,则需要将远程 URL 从 SSH 切换到 HTTPS

如果没有提示您输入用户名和密码,说明您的凭据可能已缓存在计算机上。 您可以在密钥链中更新您的凭据,用令牌替换您的旧密码。

  1. 保存好生成的令牌码,该码即为使用hexo deploy后提示输入密码时使用的密码

关闭二次验证(不推荐):

  1. 登录github.com
  2. Settings->Account Security
  3. 在 Two-factor authentication 栏下点击Edit
  4. 点击 Disable two-factor authentication

关闭二次验证后,hexo部署提交时使用的密码即为GitHub网站用户密码。

参考:

http://fezl.me/2017/05/20/GitHub%E4%BA%8C%E6%AC%A1%E9%AA%8C%E8%AF%81%E5%B8%A6%E6%9D%A5%E7%9A%84%E9%97%AE%E9%A2%98/

0%