首页 > 编程知识 正文

ssh密钥登录的详细过程(bitwarden怎么用_使用 bitwarden_rs 搭建自托管的密码服务器)

时间:2023-05-05 07:09:10 阅读:123994 作者:1457

几年前我第一次接触密码管理器时,首先使用了开源的KeePassX。 体验不理想,唯一的优点可能是开源。 因此,之后转向了在安全性和用户体验的平衡方面掌握得很好的替代品。 当时,为了介绍最先使用的一种叫做SafeInCloud的产品,写了《密码管理工具 Safe In Cloud》。

除了在用户体验方面比KeePassX系列项目更好之外,SafeInCloud还吸引了我,一个是密码数据库的设备间同步,并选择了同步使用的云服务提供商这是SafeInCloud与其他提供密码数据库托管服务的产品(例如1Password )之间的重要区别。 1Password流只能将密码数据存储在自己的服务器上。

然后,如果基本上出现了新的密码管理工具,并且是带有图形界面的,那就基本上关注了。 之后,我们尝试过其他产品,并转向便于移动端体验的Enpass。 与当时的SafeInCloud相比,Enpass提供了更好的数据同步稳定性,并且支持使用私有云进行同步。

今年春节期间,在定期的季度安全审查中,我不小心发现了一个新的开源密码管理器Bitwarden。 此密码管理器使用自己开发的服务端存储和同步数据。 服务端使用. Net开发,浏览器扩展和桌面客户端使用Javascript,移动端使用C#。

当时最吸引人的是,该项目的几个客户端体验都非常出色,自动填充功能很流畅,支持一次性密码(OTP二次认证)。 此外,一些高级功能每年只需要10美元的订阅课程。 因此,我很快购买了一年的高级订阅,在我的服务器上安装了测试,并快速切入使用。

在连续使用几个星期后,发现了两个明显的缺点。 由于Bitwarden服务是使用. Net开发的,因此使用Docker部署时镜像大小太大。 此外,正在使用MSSQL数据库。 部署此数据库会提高对服务器的要求。 因此,在使用期间,我一直在注意社区是否有其他替代产品,但同时也很烦恼。 如果切换到其他密码管理器,则可能会丢失顺畅的客户端体验。

3月,我们发现社区中有人使用Ruby开发了兼容的Bitwarden服务bitwarden-ruby (后来改名为rubywarden )。 由于此服务器使用SQLite服务器存储数据,因此对个人来说已足够,与官方服务器相比,对计算机配置的要求大大降低。 但是,我没有引进Ruby web项目的经验,所以一直没有尝试。

7月下旬,在GitHub上搜索时,发现有人用Rust实现了Bitwarden服务器。 项目称为bitwarden_rs,提供了Docker镜像。 此实现进一步降低了计算机配置要求,减少了Docker镜像大小,使部署变得非常容易。 此外,正式服务需要付费订阅的某些功能在此实现中是免费的。 导入后,也给打算记录、打算自己导入的读者留下参考。

要求

需要域名。

机器需要Docker环境。 具体来说,请参照Docker官方文档安装Docker-CE。

此外,本文还使用docker-compose管理服务,并参考docker-compose的官方文档进行安装。 在Linux上可以用一行命令安装。

1

sudo curl-l https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$ (

如果要更新docker-compose,也可以直接使用此命令。 只需将版本号更改为最新的docker-compose版本号。

配置文件

假设您准备在主目录中存储数据,然后创建一个新目录:

123

cd ~ mkdir bitwarden cd bitwarden

pwd

#应输出的/home/username/bitwarden

准备配置文件:

1234567

cat config.env

上述配置文件说明:

SIGNUPS_ALLOWED控制是否释放用户注册。 保存数据前必须先注册,所以先开放;

域填写您计划分配给Bitwarden服务的域名;

DATABASE_URL设置容器中数据库的路径。 不设定也没关系。 默认值为/data/db.sqlite3。

ROCKET_WORKERS配置服务器使用多个线程。 10为默认值,可根据机器性能和个人需求进行适当调整;

WEB_VAULT_ENABLED设置是否打开Web客户端。 选中后,可以访问域名并打开Web客户端,用户登录后可以通过网页管理密码。 因为需要注册用户,所以暂时打开;

准备服务配置文件:

12345678910111213141516

>cat >> docker-compose.yml <

这个文件主要描述了这些内容:

bitwarden 现在是唯一一个服务;

image: mprasil/bitwarden:latest 指定使用 Docker Hub 的 mprasil/bitwarden 最新镜像;

volumes 中指定将容器内的 /data 目录挂载到宿主机的当前目录下的 data 目录,这样你可以在宿主机上执行数据库的备份操作;

ports 指定将容器内的端口映射到宿主机上,并且这些端口只能在宿主机本地访问:

80 端口映射到了宿主机的 6666 端口。这个端口是 HTTP 服务;

3012 端口映射到了宿主机的 6667 端口。这个端口是 websockets 服务;

以后对 bitwarden 服务做的所有操作,都需要预先进入这两个配置文件所在的目录内。

反向代理和 HTTPS、启动服务

因为服务描述文件中将 bitwarden 服务的 80 端口映射到了宿主机的 6666 端口,你可以在宿主机上使用 nginx 或其他反向代理,为你的域名配置对应的代理规则,使得访问域名时,流量可以经由 bitwarden 服务来处理。

注意:因为 Bitwarden 客户端使用了 websockets 长连接,而 Rocket 框架目前无法原生支持 websockets 连接,bitwarden_rs 在内部其实启动了两个服务器。在设置反向代理时注意根据路径不同,需要代理到不同的端口。

如果你使用 Caddy (V2版本),配置样例大致是这样的:

123456

example.com {

reverse_proxy /notifications/hub/negotiate 127.0.0.1:6666

# websockets

reverse_proxy /notifications/hub 127.0.0.1:6667

reverse_proxy /* 127.0.0.1:6666

}

当然这只是最基础的反向代理配置,你还可以加入 HSTS / 压缩 / XSS 防护等配置。详细的配置样例请参考 bitwarden_rs 官方的 Wiki。

此外,现在是 2020 年,还请为域名配置 HTTPS 证书,并将 HTTP 流量阻挡或重定向到 HTTPS。这是对数据安全的基本尊重。 这方面的配置可以参考《快速配置 HTTPS》。

如果你在使用 Caddy,仅需要设置好 ACME 邮箱地址,并在配置文件中使用域名,Caddy 会自动帮你申请和管理 Let’s Encrypt 证书。

如果你使用 traefik 或其他反代方案,请自行参考工具各自的官方文档完成配置。

最后启动服务:

1

docker-compose up -d

用户注册和数据导入

启动服务后,通过浏览器访问你配置好的域名,应当看到下图所示的登录界面。

点击下方链接进入注册页面。

注册完毕之后不需要验证邮箱(bitwarden_rs 目前没有实现邮件相关的功能),直接登录。登录之后在左侧栏的「工具」菜单中找到数据导入页面,如图。

在这里进行数据导入就可以啦。

关闭用户注册、关闭 web vault

现在你的 Bitwarden 服务器允许任何人注册帐号使用,你可能希望关闭这个功能。在前面生成的 config.env 中,调整以下两项值:

12

SIGNUPS_ALLOWED=false

WEB_VAULT_ENABLED=false

修改之后,需要重启 bitwarden 服务才生效。运行以下命令来删除并重新创建容器。不必担心,因为指定了 volume 映射,你的数据不会被删除。

1

docker-compose down && docker-compose up -d

这样就关闭了用户注册功能,并禁用了 web vault 的访问。密码数据之后还是可以在客户端中进行编辑的。

客户端的使用

安装配置好服务端后,还需要在客户端上登录,将数据同步过来,才能使用自动填充等功能。Bitwarden 的客户端界面都大同小异,这里以 Firefox 扩展为例。

首先在登录界面,点击左上角齿轮图标的设置按钮。

在设置界面,只需要在最上面的服务器地址栏中,填写你的 Bitwarden 服务器地址即可。然后点击设置界面右上角的「保存」。接下来使用你的邮箱和主密码登录即可同步数据。

如何更新服务端

12345678

# 进入服务配置所在目录

cd ~/bitwarden

# 拉取最新镜像

docker-compose pull bitwarden

# 使用最新镜像重新启动服务

docker-compose up -d bitwarden

# 清理旧的镜像文件

docker image rm $(docker image ls -f dangling=true -q)

注意事项

对于使用任何密码管理工具的人来说,主密码的重要性不言而喻。一旦主密码泄漏,相当于将所有帐号密码拱手相让;一旦主密码丢失,所有数据也都化作随机噪音,变得一文不值。所以,请时常审视、改进你的安全策略,定期对帐号做安全审查,不定期修改并牢记主密码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。