Jump to content
IPS Community Suite 简体中文
Sign in to follow this  
ipscn

Gogs 忘记密码后怎么办

Recommended Posts

Gogs 是一个基于 Go 语言的 git 服务端,本文记录管理员 gogs 忘记密码后的解决办法。

背景

在线的 gogs 实例,数据库采用的时 sqlite3 类型,忘记了管理员密码,需要重置管理员密码。

准备

一个可发送邮件的 SMTP 账户,我使用的是 126 邮箱的免费账号;

软件 SQLite Expert;

 

gogs 提供的管理员密码找回方法

管理员可通过邮箱重置自己的密码,问题是如果你的 gogs 是架设在阿里云上的,那就有些麻烦了,因为阿里云屏蔽了通常用来发送邮件的 25 端口,虽然阿里云没有屏蔽 465 端口,可是,这个端口在 gogs 中设置时,虽然提示邮件发送成功,可是,实际上却接收不到邮件。

补充一句:我用的是 126 邮箱的 smtp 功能,修改了系统的防火墙,配置了 Gogs 中的 smtp ,不管怎么整,就是发不出邮件。

另辟蹊径 1 (失败)

本地计算机 Windows 操作系统上, 安装 gogs, 安装时用同样的用户名和邮箱,然后本地使用密码找回功能,让本地的 gogs 实例,发送一封邮件到自己邮箱, 然后使用 SQLite Expert 打开本地 gogs 的 sqlite3 数据库,把管理员的 密码,rands, salt 复制到在线 gogs 实例的数据库中。

停用在在线的 gogs 实例, 先找到在线 gogs实例的 PID

pgrep gogs | xargs ps -u --pid

然后杀掉这个 PID

kill -9 [在线 gogs 实例的 PID]

然后再在 XShell 中定位到 gogs所在目录 , 启用 gogs:

nohup ./gogs web &

打开自己的邮箱,找到本地 gogs 实例发送的密码找回链接中的域名部分,更换为在线的 gogs 实例的域名部分,浏览器中打开,输入新密码,卧槽,失败了:

gogs

另辟蹊径 2 (成功)

打开本地 gogs 实例的数据库,找到管理员账户的 password, rands 和 salt 三项,复制到在线 gogs 实例的数据库中,再次重启在线的 gogs 实例,使用本地的管理员密码登录,成功了。

登录成功后,可在用户设置及->修改密码页面修改密码:

gogs

 

至此,忘记 gogs 管理员密码的问题解决了。

 

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×