You've successfully subscribed to 完美的胖达
Great! Next, complete checkout for full access to 完美的胖达
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Ghost管理员重置密码

Ghost管理员重置密码

. 4 min read

刚刚(你看到的时候应该是一周后了)邻居给我发了一个链接,GCE的300刀免费额度可以再薅一次羊毛。
https://www.vediotalk.com/?p=2798

结果是我并没有薅羊毛成功,这是个悲伤的故事。

更悲伤的是因为照帖子操作需要我把自己浏览器的cookie和缓存清空了。

于是……嗯,大件事了!

我的博客后台不能登录了。

不知道我之前做了什么骚操作,总之我的博客后台密码就是不正确。

浏览器记录下的密码,我记忆中的常用密码都不正确

虽然Ghost提供了忘记密码找回的功能,但是那是给你的账号发邮件,换句话说你得先配置Ghost有发送邮件的功能才行,很遗憾我偷懒并没配,此路不通。

所以密码不正确-找不回密码,这不就完蛋了么。

哈哈哈,我有备份。

慢着,备份恢复了可密码还是找不到啊……所以恢复备份不解决问题

莫慌,只要能访问服务器就行。

首先SSH登录服务器终端,或者你用你的VPS供应商的网页登录也可以,不管怎么样进入服务器命令行页面。

cd /var/www/ghost/content/data
sudo apt install sqlite3
#我的安装,需要操作SQLite数据库,所以需要安装SQLite工具,如果你已经装过了就无视
sudo sqlite3 ghost.db
#默认数据库名字,如果你是MySQL数据库请自行使用MySQL连接
#请注意务必使用sudo提权,否则数据库是只读模式

这样就能直接访问后台数据库了。

select * from users;

列出所有后台用户
如果是个人Ghost博客基本上应该只有一个用户,如果是多人得查看一下哪个才是管理员,记录下id。一般来说id是1(第一个用户)。其实之前还有个第0号用户是Get Started,不过一般用到现在早就被删掉啦哈哈哈。

会发现一个一长串的乱码,这就是密码的密文
哇,有密文是不是就能解密了呢?

很遗憾,密文是使用BCrypt算法加密得到的。
BCrypt是一种单向Hash加密算法,默认是将明文和一串128bit长度的随机字符串(Salt)进行hash操作,循环重复10次。
加了10次盐的密文是无法解密的。
即使使用彩虹表Hash碰撞操作想要反向获取明文,时间复杂度上也是不可操作的(当前计算水平需十年)。

所以想知道我上次到底改成了啥密码已经不可考了。

不过这不影响我们的操作。

首先访问这里:
https://passwordhashing.com/BCrypt?utm_source=BCHG&utm_campaign=DomainMigration&utm_medium=redirect
Jietu20190124-131254@2x
在文本框中输入你想使用的密码,然后点击Generate Hash生成BCrypt加密后的密文。记录下来。

在SQLite中执行如下指令:

update users set password = "---------------------" where id = 1;

分别替换双引号中的字符串为刚刚记录的密文和id为你的管理员id即可。

如果你的账号因为尝试次数过多已被锁定别忘记解锁

update users set status = "active" where id = 1;

最后退出数据库

.quit

于是密码就被重置为新密码了,这次肯定不会忘记了。

哎呀,都快不记得我这么一阵操作猛如虎是要进博客后台干啥来着了。

管他的,搞定收工


一步步教你从零开始搭博客系列: