news 2026/9/10 16:08:15

如何将 code-server 登录密码以 argon2 哈希形式存储(hashed-password)?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何将 code-server 登录密码以 argon2 哈希形式存储(hashed-password)?

如何将 code-server 登录密码以 argon2 哈希形式存储(hashed-password)?

【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server

code-server 默认使用密码认证,安装时会在配置文件中生成一个明文密码,登录时必须从配置文件里复制出来填入。如果你希望配置文件里不留明文凭据,而是只保存一个 argon2 哈希,就可以改用hashed-password字段:把真实密码用 argon2 计算成哈希后写进配置,登录时输入明文密码,服务端用哈希做校验。下面说明完整的操作步骤,以及 Docker Compose 场景下的一个易错点。

前提是你已经安装好 code-server,并且它的配置文件里authpassword(默认值)。

确认配置文件位置与当前内容

code-server 启动时会创建默认配置文件,路径为~/.config/code-server/config.yaml。其默认内容形如:

bind-addr: 127.0.0.1:8080 auth: password password: mew...22 # Randomly generated for each config.yaml cert: false

其中auth: password表示启用密码认证,password是明文密码(文档示例值,每台机器随机生成)。如果你用了--config标志或$CODE_SERVER_CONFIG环境变量改过位置,就以实际位置为准。这一步是为了确认你确实要改auth: password的那份配置,避免改错文件。

用 argon2-cli 生成密码哈希

在服务器上执行下面命令生成哈希,把thisismypassword换成你的真实密码,并务必保留引号

echo -n "thisismypassword" | npx argon2-cli -e

命令会输出一行 argon2 哈希,文档给出的示例结果(仅为文档示例,你的输出会不同):

$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4

记下这一整行,它是后面要写入配置的哈希值。

把配置中的 password 换成 hashed-password

编辑~/.config/code-server/config.yaml,保留auth: password,用hashed-password字段存上一步得到的哈希,替换掉原来的password字段:

auth: password hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1D5V9XtLws4"

注意两点:

  • hashed-password字段优先于password。两者同时存在时,服务端会用hashed-password做认证,因此可以删掉旧的明文password字段,达到"配置文件不留明文密码"的目的。
  • hashed-password只能通过$HASHED_PASSWORD环境变量或配置文件传入,不能像普通参数那样直接放在命令行上;把它写进config.yaml或作为$HASHED_PASSWORD传入即可。

重启 code-server 使配置生效

改完配置后重启服务让改动生效:

sudo systemctl restart code-server@$USER

该命令会用 systemd 重启当前用户的 code-server 实例;$USER是运行 code-server 的登录用户,保留原样即可由 shell 展开。

验证登录是否正常

在浏览器打开 code-server 的登录页,输入你的明文真实密码(不是那串哈希)。服务端会用存储的 argon2 哈希校验该密码,校验通过即进入编辑器,说明hashed-password已生效。

如果登录一直失败,优先核对:

  • 生成哈希时是否漏掉引号、或误把哈希本身当成了要存/要输入的值;
  • 配置里的auth是否仍是password(改成none后密码认证会被关闭);
  • auth: password但既没有password也没有hashed-password,code-server 启动时会直接报错,提示需通过配置文件或$PASSWORD/$HASHED_PASSWORD提供密码。

Docker Compose 下的转义说明

如果你用 Docker Compose 文件注入哈希,Compose 会把单个$当作变量引用开头。这时需要把哈希里的每个$写成$$,文档给出的写法示例:

- HASHED_PASSWORD=$$argon2i$$v=19$$m=4096,t=3,p=1$$wST5QhBgk2lu1ih4DMuxvg$$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1D5V9XtLws4

只有在 Compose 环境下才需要这种$$处理;直接编辑config.yaml时保持单个$即可,不要把两种写法混用。

相关文档

  • 密码认证、限流与暴露 code-server 的安全做法见 docs/guide.md。
  • 修改密码、哈希存储及登录限流(每分钟两次、另加每小时十二次)等问题的完整说明见 docs/FAQ.md。

【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 16:06:39

基于SocketCAN与InfluxDB的车载TBOX数据采集系统实战

简介:本资源为汽车T-Box数据采集与分析系统的完整工程实现,面向嵌入式开发、车联网及智能网联汽车方向的中高级工程师与高校研究者,聚焦解决车载CAN总线数据实时采集、多协议无线上传、云端接口对接及基础分析建模等核心问题。压缩包共205个文…

作者头像 李华
网站建设 2026/9/10 16:05:27

SSM框架在高校新生报到系统中的应用与优化

1. 项目背景与核心需求新生报到管理系统是高校信息化建设中的关键一环,传统纸质登记方式存在效率低下、数据易丢失、统计困难等问题。基于SSM框架开发的系统能实现以下核心功能:学生信息数字化录入(支持批量导入)宿舍分配自动化算…

作者头像 李华
网站建设 2026/9/10 16:04:23

多店铺电商销售数据能不能实时看到?3类工具盘点与选型指南(2026)

先说结论:多店铺的电商销售数据,可以实现“准实时”的跨店统一查看,但“实时”的颗粒度取决于数据来源与工具形态。市面上主流的电商多店铺数据工具,按功能定位大致可分为三类——平台原生数据工具“看单店”、ERP/进销存系统“管…

作者头像 李华
网站建设 2026/9/10 16:04:20

2026年电商运营必备的数据工具有哪些?

电商运营的数据工作,早已不只是打开店铺后台看看今天的订单。当一家店铺同时在淘宝、抖音、拼多多经营,广告分散在多个投放渠道,库存、财务又各自成体系时,运营真正需要的是一套能把分散数据整合起来、并回答经营问题的工具组合。…

作者头像 李华
网站建设 2026/9/10 16:00:24

Seaborn数据可视化:从入门到实战

1. 为什么选择Seaborn绘制统计图形?在数据可视化领域,Matplotlib作为Python的基础绘图库已经存在多年,但它的API设计对新手并不友好,需要编写大量代码才能获得专业级的统计图形。这正是Seaborn诞生的背景 - 它构建在Matplotlib之上…

作者头像 李华
网站建设 2026/9/10 16:00:07

Hydra 游戏库自动扫描指南:一键发现已安装的游戏

Hydra 游戏库自动扫描指南:一键发现已安装的游戏 【免费下载链接】hydra Hydra Launcher is an open-source gaming platform created to be the single tool that you need 项目地址: https://gitcode.com/GitHub_Trending/hy/hydra 硬盘里已经躺着几十个装…

作者头像 李华