如何将 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,并且它的配置文件里auth是password(默认值)。
确认配置文件位置与当前内容
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),仅供参考