Vaultwarden 紧急访问怎么正确设置
了解 Vaultwarden 紧急访问的配置方法,区分查看与接管,掌握等待期自动批准条件,并提前处理 VPS 欠费和提醒邮件遗漏问题。
Vaultwarden 紧急访问简述
Vaultwarden 紧急访问允许您信任的人在您选择的等待期结束后读取您的保险库,或接管该保险库。服务器开关是 EMERGENCY_ACCESS_ALLOWED,默认已启用。两个每小时运行的任务负责处理定时操作。一个任务向您发送提醒,另一个任务在等待期结束后批准请求。访问本身不依赖电子邮件。但有人请求访问时发送的警告依赖电子邮件,这部分需要单独规划。
本指南面向单人管理员。您负责运行服务器,也是保险库的相关人员。内容涵盖服务器设置、双方在 Web 保险库中的操作、View 与 Takeover 的区别,以及等待期实际结束的时间。最后一部分介绍保险库的应急方案,因为只有在他人需要访问时服务器仍在运行,紧急访问才有用。
以下行为均根据 Vaultwarden 源代码和 .env.template 于 3 November 2026 读取得出。这对应 main 分支和 1.37.5 版本;该版本于 1 November 2026 发布。如果二者彼此不同,或与更早的 1.37.4 版本不同,文中会明确说明。1.37.5 版本说明列出了一个中等严重程度的紧急访问安全修复,并说明要通过紧急访问接管账户,必须使用 web vault 2026.9.0 或更高版本。如果您运行较旧版本,请升级。
两种角色:授权者和受托者
授权者是指定可信联系人的账户所有者。受托者是该可信联系人。双方都需要拥有自己的账户。Bitwarden 帮助文档说明,该联系人必须在同一服务器上拥有账户。对于自托管实例,这意味着使用您的 Vaultwarden,而不是 bitwarden.com。
Bitwarden 将紧急访问作为高级功能提供。Vaultwarden 的紧急访问处理程序不检查高级功能资格。唯一的控制开关是 EMERGENCY_ACCESS_ALLOWED,并且该开关会同时作用于所有用户。
授权者可以为每个联系人选择以下两种访问级别之一:
- 查看:受托者可以读取授权者个人保管库中的项目。
- 接管:受托者为授权者的账户设置新的主密码,并以授权者身份登录。
授权者还可以设置以天为单位的等待时间。受托者请求访问后,授权者可以批准或拒绝。如果授权者不执行任何操作,请求会在等待时间结束后自动获批。
服务端配置:3 个设置
如果您按照使用 Docker Compose 在 VPS 上运行 Vaultwarden完成了配置,请将以下内容添加到现有 vaultwarden 服务的 environment: 块中。这里显示的值都是默认值,因此写入这些内容不会改变行为。但这样可以让下一个读取该文件的人清楚了解当前配置。
environment:
DOMAIN: "https://vault.example.com"
EMERGENCY_ACCESS_ALLOWED: "true"
EMERGENCY_NOTIFICATION_REMINDER_SCHEDULE: "0 3 * * * *"
EMERGENCY_REQUEST_TIMEOUT_SCHEDULE: "0 7 * * * *"EMERGENCY_ACCESS_ALLOWED控制用户是否可以使用紧急访问功能。模板说明该设置对所有用户全局生效,src/config.rs中的默认值为 true。如果该值为 false,所有紧急访问操作都会失败并返回 Emergency access is not enabled.,联系人列表也会为空。两个定时任务也都会停止执行。
EMERGENCY_NOTIFICATION_REMINDER_SCHEDULE是向授权方发送提醒邮件的任务。默认情况下,该任务每小时运行一次,在整点后的第 3 分钟运行。
EMERGENCY_REQUEST_TIMEOUT_SCHEDULE是批准等待时间已到请求的任务。默认情况下,该任务每小时运行一次,在整点后的第 7 分钟运行。
这些计划不是普通的 crontab 行。它们包含 6 个字段,第一个字段是秒:SEC MIN HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK。因此,0 7 * * * *表示每小时第 7 分钟的第 0 秒。模板还说明,这些计划始终使用 UTC(协调世界时),与服务器使用的时区无关。
有两个设置可以关闭这些任务。将计划设置为空值会禁用对应的任务。将 JOB_POLL_INTERVAL_MS设置为 0会禁用服务器上的所有定时任务。该设置的默认值为 30000,表示调度器每 30 秒检查一次是否有到期任务。如果超时任务不运行,系统就不会自动批准任何请求。之后只有授权方点击请求时才会批准。这样会失去紧急访问功能的意义,因为授权方正是无法点击请求的人。
DOMAIN必须与您打开密码库时使用的地址一致。模板说明,邮件链接依赖此设置,因此使用错误的 DOMAIN发送邀请时,被授权方会被引导到错误的地址。
应用更改,并确认容器可以读取这些设置:
docker compose up -d
docker compose exec vaultwarden printenv EMERGENCY_ACCESS_ALLOWED EMERGENCY_REQUEST_TIMEOUT_SCHEDULEdocker compose up -d会在容器环境发生变化时重新创建容器。第二条命令应输出 true和 0 7 * * * *。如果某个变量没有输出任何内容,说明该变量未在容器中设置,因此 Vaultwarden 会使用内置默认值。
不使用 SMTP 时,紧急访问还能正常工作吗?
访问功能本身可以,警告通知不行。答案来自源文件 src/api/core/emergency_access.rs,而不是 wiki。wiki 中的 SMTP Configuration 页面介绍的是向新用户发送邀请,没有说明紧急访问。
在源代码中,每个步骤都会将状态变更保存到数据库。只有启用邮件后,系统才会发送电子邮件。将 SMTP_FROM 与 SMTP_HOST 或 USE_SENDMAIL 其中之一同时设置后,邮件才算启用。关闭邮件时,各步骤的行为如下:
- 邀请现有用户。 源代码注释为
if mail is not enabled immediately accept the invitation for existing users。联系人会直接变为已接受状态。但授权方仍需确认该联系人。 - 邀请没有账户的地址。 如果关闭
INVITATIONS_ALLOWED,邀请会失败,并返回Grantee user does not exist:,后面跟随该地址。如果启用,Vaultwarden 会为该地址创建占位用户,但不会自动接受邀请。因此,最好先让被授权方注册,再向其发送邀请。 - 确认、请求、批准、拒绝。 系统会保存状态变更,但不会发送电子邮件。
- 超时批准。 定时任务会按时批准请求,但不会发送电子邮件。
- 提醒。 提醒任务完全不会发送任何内容。
因此,不使用邮件时,整个流程仍可运行。代价是没有通知。Bitwarden 的帮助文档说明,发起请求时会通过电子邮件通知授权方。在您的服务器上,只有邮件正常工作时才会收到该邮件。否则,请求可能等待完整的等待时间,随后变成您完全不知道的批准状态。
邮件也可能已经配置但无法正常工作。系统会先保存请求,再发送电子邮件,因此 SMTP 服务器故障不会停止计时。请求仍会继续倒计时。请正确配置并测试邮件。通过中继从自托管应用发送邮件介绍 SMTP 配置,本指南不再重复。Vaultwarden 读取的变量为 SMTP_HOST、SMTP_FROM、SMTP_PORT、SMTP_SECURITY、SMTP_USERNAME 和 SMTP_PASSWORD。
按正确顺序在 Web Vault 中完成设置
Vaultwarden 提供 Bitwarden Web Vault,因此下面的标签来自 Bitwarden 帮助页面。您使用的版本可能会使用略有不同的措辞。
- 被授权人先在您的服务器上创建自己的账户。 向其提供确切的 Vault URL,该地址与您的
DOMAIN相同。请其为自己的账户启用两步登录。其账户是访问您账户的入口,因此也应采取同样的安全措施。 - 授权人添加联系人。 依次转到 Settings、Emergency access,然后选择 Add emergency contact。输入被授权人的 Email,选择 User access(View 或 Takeover),选择 Wait time,然后选择 Save。
- 被授权人接受邀请。 启用邮件后,被授权人打开邀请邮件并选择 Become emergency contact。Bitwarden 帮助页面说明,邀请有效期为五天。若服务器未启用邮件功能,且被授权人已有账户,服务器会代其接受邀请。
- 授权人确认。 当联系人状态显示为 Needs Confirmation 时,打开其旁边的菜单并选择 Confirm。Vault 会显示一段指纹短语。双方应通过电话或当面互相读出这段短语。两边必须逐字匹配。如果不匹配,说明您即将信任的可能不是您以为的那个账户。
如需稍后更改访问级别或等待时间,请依次转到 Settings、Emergency access,然后选择联系人的电子邮件地址。如需删除联系人,请打开其旁边的菜单并选择 Remove。
需要访问时,被授权人依次转到 Settings、Emergency access。在 Designated as emergency contact 下找到授权人,打开菜单并选择 Request Access。授权人会在 Trusted emergency contacts 下看到请求,并可从同一菜单中选择 Approve 或 Reject。
查看与接管
查看提供只读访问权限。在 Vaultwarden 中,查看处理程序会加载授权人个人拥有的条目(Cipher::find_owned_by_user)。组织中的条目归组织所有,而不归授权人所有,因此这些条目可能不会显示。如果共享条目存放在组织中,还应将被授权人加入该组织,或在个人密码库中保留关键条目的副本。
接管的权限强得多。被授权人会设置新的主密码,然后以您的身份登录。Bitwarden 的帮助文档说明,这会替换您的主密码,并移除您的两步登录方式。Vaultwarden 的源代码执行相同操作:删除授权人账户上的所有两步登录方式。它还会将授权人从授权人不是 Owner 的所有组织中移除。因此,接管可能会破坏其他人依赖的共享访问权限。
批准后撤销访问权限的方式也不同。授权人可以使用 Reject 结束查看授权。接管授权无法通过菜单撤销。Bitwarden 的帮助文档说明,恢复访问的唯一方法是使用新的主密码登录,然后将其修改为联系人不知道的密码。
对大多数人来说,查看是正确的选择。被授权人可以读取所有密码和备注,并使用这些信息执行操作。只有在他人必须继续使用您的账户时才选择接管,例如对方需要使用该账户的组织所有权来维持家庭密码库运行。
请将 VPS 提供商登录信息、SSH(安全外壳)密钥位置和 Vaultwarden 管理员凭据作为条目存放在个人密码库中。这样,查看权限不仅能让被授权人获得密码,还能让其访问服务器。
待处理请求何时真正获得批准?
等待时间是按联系人设置的整数天数。Bitwarden 帮助文档说明,最短等待时间为 1 天。从 1.37.5 版本开始,在 main 分支中,Vaultwarden 会使用 Emergency access wait time is out-of-bounds! 拒绝 1 到 90 天之外的值。1.37.4 及更早版本的处理程序没有此检查,因此这些版本只能通过 Web 保险库中的选项限制取值。
被授权联系人选择 Request Access 后,Vaultwarden 会记录请求时间。截止时间等于请求时间加上等待天数。请求不会在截止时间刚到时立即获得批准,而是在超时任务下次运行并发现截止时间已过后才批准。默认计划是在每个小时的第 7 分钟(UTC)运行,因此批准时间可能比截止时间晚约 1 小时。
以下示例使用 3 天等待期。被授权联系人在 Monday 14:20 UTC 请求访问。截止时间是 Thursday 14:20 UTC。Thursday 14:07 运行的任务发现截止时间仍在未来,因此跳过该请求。15:07 运行的任务会批准请求。如果启用了邮件,授权人会收到等待超时邮件,被授权联系人会收到批准邮件。
提醒任务的实际行为没有每小时计划看起来那么频繁。它只会在截止时间前的最后 1 天内向授权人发送提醒,并且每天最多发送 1 次。它不会持续每小时发送警告。请求本身会计为一次通知,因此自请求发出后必须经过 24 小时,才能发送提醒。使用 1 天等待期时,这个时间点就是截止时间。在 1.37.5 和 main 中,提醒任务会跳过截止时间已过的请求,因此 1 天等待期完全不会收到提醒,只有请求邮件会发出警告。在 1.37.4 中,1 天等待期可能在截止时间或截止时间刚过后收到提醒,此时距离超时任务批准请求只剩几分钟。
等待期间,授权人可以随时采取操作。Approve 会立即生效,不检查等待期已经过去了多长时间。Reject 会将联系人状态恢复为已确认。被授权联系人仍然是受信任联系人,之后可以再次请求。Bitwarden 帮助文档也说明了相同规则:拒绝请求不会移除被授权联系人。
请根据下方的威胁模型选择等待时间。等待时间必须长于您可能无法查看邮件的最长时间。没有互联网连接的假期算在内,住院也算在内。
完整测试一次整个流程
不要等到真正发生紧急情况时才发现邮件无法使用。请使用您控制的第二个账户进行演练。
- 在您的服务器上注册一个测试账户,并使用您可以读取的电子邮件地址。
- 从真实账户添加测试账户作为联系人,选择 View 和 2 天等待期,然后确认。2 天是仍有机会收到提醒的最短等待期。
- 从测试账户选择 Request Access。您的真实地址应该很快收到请求邮件。如果没有收到,说明邮件功能未正常工作。先检查垃圾邮件文件夹。
- Reject 该请求。然后从测试账户再次请求。这次不要进行任何操作。
- 您应该在等待期的第 2 天收到 1 次提醒。截止时间过后约 1 小时内,测试账户应该能以 View 模式看到您的保险库。
- 移除测试联系人。
如果第 5 步始终没有发生,请检查 EMERGENCY_REQUEST_TIMEOUT_SCHEDULE 不为空,并确认 JOB_POLL_INTERVAL_MS 不是 0。
计划必须在服务器之后继续有效
紧急访问依赖您的 Vaultwarden。您的 Vaultwarden 运行在需要有人付费的 VPS 上,并使用需要有人续费的域名。如果您不在了,就没人支付下一张账单。提供商暂停或删除服务器后,密码库也会随之消失,您设置的所有紧急联系人也将无法访问。域名续费也是如此。如果域名过期,即使服务器仍在运行,受托人保存的 URL 也无法再访问服务器。不同提供商和注册商在错过付款后等待的时间不同,因此请阅读您所使用的提供商和注册商的计费政策,并记录相关信息。
因此,书面计划不能只有“请求紧急访问”这一项。它还应包含以下内容,并存放在受托人无需访问您的密码库即可取得的位置:
- 谁可以支付 VPS 费用。 记录提供商账户的登录信息,或添加到该账户的第二位人员,并准备一张下个月不会过期的支付卡。
- 谁可以续费域名。 记录注册商账户的登录信息,启用自动续费,并记录续费日期。
- 备份在哪里,备份密码在哪里。 如果备份使用的密码只存在于密码库中,那么密码库消失后,这份备份就没有用。在 VPS 上备份和恢复 Vaultwarden介绍了备份本身。计划必须说明备份存储在哪里,以及备份密码在服务器之外保存在哪里。
- 受托人自己的账户和密码库 URL。 这些内容必须在发生任何情况之前准备好。受托人在您不在后才首次得知 URL,就已经错过了注册和完成确认的机会,并且可能发现注册已关闭。
- 受托人拥有的访问级别以及等待时间。 他们需要知道等待是正常流程,避免等了一天后就放弃。
另一个需要单独考虑的问题,是自托管是否适合依赖您的人。Vaultwarden 与 Bitwarden 官方服务器的比较介绍了这一决策。托管的 Bitwarden 账户不会因为您的 VPS 账单未支付而停止服务。
签到开关会发现你已离线
紧急访问机制需要有人发起请求。它不会发现你已经停止登录。自动故障通知开关可以完成这项工作。一个近期示例是 Death Plan Switch。noted.lol 于 2026 年 10 月 24 日介绍了它,将其作为供个人管理员自托管的自动故障通知开关。
据该文章介绍,它每周向你发送一封包含签到链接的电子邮件,你必须在页面上按下按钮。仅打开链接不算完成签到。错过签到后,它会先发送提醒,3 天后联系你指定的近亲。如果仍无人回应,它会向你选择的人员发送预先写好的消息。从上次成功签到开始,整个流程最多需要 13 天。消息的用途是说明信息存放在哪里,而不是传递密码。
这与紧急访问机制很匹配。消息可以这样写:我的密码存放在 https://vault.example.com, 的 Vaultwarden 中,因此请登录你自己的账户,申请紧急访问,然后等待 7 天。作者建议将该开关托管在受保护服务之外的独立位置。这一点在这里很重要,因为如果开关与服务位于同一台 VPS 上,那么同一张未支付的账单也会让它停止运行。作者还称该工具较新,只能尽力运行,因此应像测试计划的其他部分一样测试它。
威胁模型:紧急访问能防范什么,不能防范什么
紧急访问只解决一个特定问题:您已去世或无法采取行动,而您信任的人需要您的密码。它无需将主密码写在任何位置即可解决此问题。它还会提供等待时间,让您可以拒绝未预料到的请求。
它无法防范以下情况:
- 服务器消失。 未支付账单或已过期的域名会使密码库及其中的所有联系人都无法访问。磁盘故障且没有备份也会导致同样的结果。只有前面章节中的方案可以覆盖这种情况。
- 受入侵的被授权人账户。 任何能够以被授权人身份登录的人都可以请求访问。如果您未及时拒绝请求,对方就会获得您选择的 View 或 Takeover 权限。使用 Takeover 时,对方还可以移除您的两步登录。尽可能使用 View,选择长于您最长离开时间的等待时间,并确保被授权人使用两步登录。
- 您始终未看到的通知。 如果 SMTP 已损坏,请求会超时并自动获批,没有人提出异议。如果您自己的邮箱位于刚刚过期的域名上,也会发生同样的情况。将 Vaultwarden 邮件发送到不依赖同一服务器或域名的地址,并执行上面的演练。
- 拥有 VPS 上 root 权限的人。 紧急访问是密码库内部的一项功能。它无法控制谁能够访问服务器或其备份。了解在您自己的 VPS 上 Vaultwarden 的安全性部分介绍了这一方面。
- 组织项目。 View 只显示授权人的个人项目。组织中的共享项目需要单独制定方案。
FAQ
Vaultwarden 未配置 SMTP 时,紧急访问是否仍然有效?
是。在 Vaultwarden 源代码中(src/api/core/emergency_access.rs),无论是否启用邮件,邀请、确认、请求、批准、拒绝和定时批准都会保存其状态。邮件关闭时,向现有用户发送的邀请会立即接受。缺少的是所有电子邮件,包括通知授权者有人发出请求的邮件。因此,请求可能在授权者完全不知情的情况下获得批准。
待处理的紧急访问请求具体何时获得批准?
只有在截止时间之后运行超时任务时,请求才会获得批准。截止时间等于请求时间加上等待天数。该任务由 EMERGENCY_REQUEST_TIMEOUT_SCHEDULE 设置,默认值为 0 7 * * * *(UTC 时间每小时的第 7 分钟)。使用默认设置时,等待期结束后最多约 1 小时才会批准。如果该计划为空,或者 JOB_POLL_INTERVAL_MS 为 0,请求永远不会由定时任务批准。
Vaultwarden 中的 View 和 Takeover 有什么区别?
View 会向受信任联系人提供只读权限,使其可以访问授权者个人拥有的项目。Takeover 允许该联系人设置新的主密码,并以授权者身份登录。在 Vaultwarden 中,Takeover 还会删除授权者的所有两步登录方式,并将授权者从其不是 Owner 的所有组织中移除。授权者可以通过 Reject 结束 View。Takeover 只能通过再次更改主密码来撤销。
如何在 Vaultwarden 服务器上关闭紧急访问?
在容器环境中将 EMERGENCY_ACCESS_ALLOWED 设置为 false,然后运行 docker compose up -d。该设置对所有用户生效。之后,紧急访问操作会失败并返回 Emergency access is not enabled.。两个紧急访问任务也会停止,因此设置关闭期间不会批准任何待处理请求。
我的紧急联系人是否需要拥有自己的 Vaultwarden 账户?
需要。Bitwarden 帮助文档说明,受信任联系人必须在同一台服务器上拥有账户;对您而言,这就是您的 Vaultwarden。请让对方先注册,再向其发送邀请,并提供保管库 URL。如果对方没有账户且 INVITATIONS_ALLOWED 处于关闭状态,邀请会失败并返回 Grantee user does not exist:。