Your description here.

记一次vaultwarden 已启用二次验证但登录失败问题

最近在一台新电脑上登录 Vaultwarden 时,发现二次验证始终无法通过。第一反应是验证码本身没有问题,于是怀疑可能是服务器时区不一致导致的。

在咨询 AI 之后,发现问题很可能出在 Docker 容器的时区配置上。最初在 docker-compose.yml 中设置了环境变量:

environment:
  TZ: Asia/Shanghai

查询文档后,这个配置并不会生效

尝试修复容器时区

询问ai后,发现需要在 docker-compose.yml 中增加了时区相关的挂载:

volumes:
  - ./vw-data/:/data/
  - /etc/timezone:/etc/timezone:ro
  - /etc/localtime:/etc/localtime:ro

重启容器后再次尝试登录,结果依然失败。

进一步排查宿主机时间

这时进入服务器执行 date 命令,才发现宿主机时间竟然与标准时间相差了 2 分钟。而 TOTP 二次验证对时间偏差非常敏感,这正是问题的根源。

同步服务器时间

接下来手动同步服务器时间:

apt install ntpdate -y
apt install ntpsec-ntpdate -y
ntpdate time.windows.com
timedatectl set-timezone Asia/Shanghai

同步完成后,重新启动容器:

docker compose up -d

验证

再次登录 Vaultwarden,二次验证一次通过
问题成功解决!

添加新评论