Git 凭据管理的“陈年老方”:谈谈 .netrc 的省事与隐患
很多开发者在用 Git 遇到多账号(比如同时用 GitHub、Gitee、公司 GitLab)或者频繁需要输入密码时,第一反应往往是去配置 SSH Key。
但如果你更习惯使用 HTTPS 克隆代码,或者在 Windows 环境下不想折腾复杂的 SSH 密钥生成和绑定,其实有一个极度轻量、原生的“陈年老方案”:.netrc(在 Windows 上叫_netrc)文件。
不用装任何第三方凭据管理器,几行文本就能搞定多平台账号的自动登录。
一、 什么是.netrc/_netrc?
.netrc是类 Unix 系统(Linux/macOS)中自带的一种配置文件,用来让像ftp、curl、git这样的网络命令行工具,在连接特定服务器时自动提交用户名和密码。
在 Windows 系统下,它的文件名叫_netrc(注意:前面是下划线)。
当 Git 通过 HTTPS 协议拉取或推送代码时,如果发现本地有这个文件,就会自动去里面匹配对应域名的账号密码,省去了你手动输入的麻烦。
二、 核心配置步骤
Step 1:让 Git 开启“凭据记忆”
在正式配置前,先在终端执行一行命令,告诉 Git 开启本地凭据存储功能:
git config --global credential.helper storeStep 2:找到/创建配置文件
根据你的操作系统,前往对应的用户家目录:
Windows 路径:
C:\Users\你的用户名\_netrcLinux / macOS 路径:
~/.netrc
如果文件不存在,直接手动新建一个文本文件,并确保文件名完全一致。
Step 3:写入账号密码
用任意文本编辑器打开该文件,按照以下格式把你的 Git 平台信息填进去。它可以写无限多行,用来区分不同的服务器:
machine github.com login 你的GitHub用户名或邮箱 password 你的GitHub登录密码(或Token/个人访问令牌) machine gitee.com login 你的Gitee用户名 password 你的Gitee密码 machine gitlab.company.com login 你的工号或企业邮箱 password 你的企业GitLab密码重要提示(针对 GitHub 用户):GitHub 早已取消了纯密码推送代码的权限。如果
machine后面写的是github.com,这里的password必须填写你在 GitHub 后台生成的PAT (Personal Access Token),填网页登录密码是会报错的。
三、 它有什么优缺点?
别看这个方案简单,它在特定场景下非常好用,但也带有明显的时代局限性。
优点:
支持多服务器:像上面写的那样,只要
machine后面的域名不同,你可以塞进去几十个不同的 Git 服务器账号,互不冲突。极度轻量:纯文本形式,不需要安装任何额外的凭据管理软件。
对 HTTPS 极其友好:非常适合那些因为公司网络限制、无法使用 22 端口(SSH 协议)只能走 443 端口(HTTPS 协议)的打工人。
缺点(致命伤):
安全性极差:发现没有?你的所有账号和密码,在这个文件里都是明文存储的!任何能打开你这台电脑、进到你用户目录的人,都能一眼看光你的密码。
四、 安全性补救措施(Linux/macOS 必做)
如果你在 Linux 或 Mac 上使用这个方法,强烈建议修改该文件的权限,至少做到“除了你本人,系统里其他用户和程序没权查看”:
chmod 600 ~/.netrc这样设置后,只有当前所有者有读写权限(-rw-------),安全性会稍微提升一个档次。
但在 Windows 上,由于文件权限系统比较复杂,_netrc很难做到完美的权限隔离。因此,如果你的电脑经常会被别人借用,或者属于公共办公设备,极不推荐使用本方案。
总结
netrc属于典型的“防君子不防小人”的偷懒小技巧。如果是在自己绝对掌控的私人开发设备上,为了图省事,用它来管一管各种 HTTPS 的 Git 仓库确实很爽;但如果是生产环境或者公用设备,还是老老实实去配置 SSH Key 或者是用系统自带的凭据管理器(如 Windows Credential Manager)更稳妥。
