风险提示:虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,继续浏览代表你同意以上所有声明,否则请立即关闭本站!

Gitea 安全加固指南:关闭注册与限制登录方式

适用场景:私有团队 Git 服务、个人代码托管,不希望陌生人自行注册账号。
配置文件路径:custom/conf/app.ini/etc/gitea/conf/app.ini
修改配置后必须重启 Gitea 服务才能生效。

一、核心思路

Gitea 默认允许用户注册,并开启 OpenID、通行密钥(Passkey)等登录方式。对于私有实例,建议:

  1. 关闭所有自助注册入口
  2. 强制登录后才能浏览 (可选,适合完全私有)
  3. 关闭不需要的外部登录方式
  4. 加固会话与安装锁

二、关闭注册

[service] 段加入以下配置:

[service]
; 禁止用户自行注册,仅管理员可创建账号
DISABLE_REGISTRATION = true

; 不显示注册按钮
SHOW_REGISTRATION_BUTTON = false

; 不允许仅通过外部服务注册(OAuth 等)
ALLOW_ONLY_EXTERNAL_REGISTRATION = false

效果

  • 前台不再出现「注册」按钮
  • 新用户只能由管理员在站点管理 → 用户 中创建
  • 或使用命令行创建:
gitea admin user create --username 用户名 --password 密码 --email 邮箱@example.com

三、强制登录后才能访问(推荐私有实例)

[service]
; 未登录用户无法浏览仓库、Issue、用户页等
REQUIRE_SIGNIN_VIEW = true

适合内部团队 Git 服务。若希望公开浏览部分仓库,可设为 false


四、关闭 OpenID 登录与注册

⚠️ 常见错误 :OpenID 相关配置写在 [service] 下是无效的,必须写在 [openid] 段。
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false

验证方法

重启 Gitea 后,进入 管理后台 → 配置 → 服务配置 ,确认:

  • 「启用 OpenID 登录」→ ✕
  • 「启用 OpenID 自助注册」→ ✕

五、关闭通行密钥(Passkey)登录

登录页底部的「使用通行密钥登录」由以下配置控制:

[service]
ENABLE_PASSKEY_AUTHENTICATION = false
注意:此选项需要 Gitea 1.23.6 / 1.24+ 版本才支持,低版本无法通过配置关闭。

六、OAuth2 相关(若使用 GitHub / 企业 SSO)

若启用了 OAuth2 认证源,还需注意:

[oauth2]
; 首次 OAuth 登录时不自动创建账号
REGISTER_USER_ON_FIRST_LOGIN = false

并在 管理后台 → 认证源 中,只保留需要的登录方式,删除不用的认证源。


七、其他安全加固项

1. 安装锁(必查)

[security]
INSTALL_LOCK = true

防止他人通过 /install 重新初始化实例。

2. 登录验证码(可选)

[service]
ENABLE_CAPTCHA = true
REQUIRE_CAPTCHA_FOR_LOGIN = true

需在 [captcha] 段配置 reCAPTCHA 或 hCaptcha 密钥。

3. 会话 Cookie 安全(HTTPS 环境)

[session]
COOKIE_SECURE = true
SAME_SITE = strict

4. 隐藏用户列表(LDAP / AD 同步场景)

[service.explore]
DISABLE_USERS_PAGE = true

防止在「探索」页浏览全部用户。

5. 新仓库默认私有

[repository]
DEFAULT_PRIVATE = true

八、推荐完整配置示例

将以下内容合并到你的 app.ini 中(按实际环境调整):

[service]
DISABLE_REGISTRATION = true
SHOW_REGISTRATION_BUTTON = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = true
ENABLE_PASSKEY_AUTHENTICATION = false
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
ENABLE_CAPTCHA = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
NO_REPLY_ADDRESS = noreply.localhost

[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false

[security]
INSTALL_LOCK = true

[session]
COOKIE_SECURE = true
SAME_SITE = strict

[repository]
DEFAULT_PRIVATE = true

九、Docker 部署环境变量写法

若使用 Docker 部署,环境变量格式为 GITEA__段名__配置项

environment:
  - GITEA__service__DISABLE_REGISTRATION=true
  - GITEA__service__REQUIRE_SIGNIN_VIEW=true
  - GITEA__service__ENABLE_PASSKEY_AUTHENTICATION=false
  - GITEA__openid__ENABLE_OPENID_SIGNIN=false
  - GITEA__openid__ENABLE_OPENID_SIGNUP=false

官方 Docker 镜像启动时会自动将环境变量写入 app.ini


十、修改后检查清单

检查项预期结果
前台注册按钮不显示
OpenID 登录已关闭
通行密钥登录不显示
未登录访问仓库跳转登录页(若开启 REQUIRE_SIGNIN_VIEW)
INSTALL_LOCK为 true
管理后台配置页与 app.ini 一致

十一、常见问题

Q:写了 ENABLE_OPENID_SIGNIN = false 但后台仍显示开启?

A:检查是否误写在 [service] 段而非 [openid] 段,或是否有 Docker 环境变量覆盖了配置。

Q:关闭注册后 OAuth 还能登录吗?

A:已有账号可以登录,但不会自动创建新账号(需配合 REGISTER_USER_ON_FIRST_LOGIN = false)。

Q:忘记管理员密码怎么办?

A:使用 gitea admin user change-password 命令重置。

Q:配置修改后没有生效?

A:确认已重启 Gitea 服务,并在管理后台 → 配置 → 服务配置中核对当前生效值。


参考链接

发表评论