Windows 上 Git SSH 私钥要不要设置密码?
目录
最近我重新整理了一下自己电脑上的 Git SSH 配置,顺手也想清楚了一个以前一直有点纠结的问题:
私钥到底要不要设置密码?
不设密码,git pull、git push 都很顺手;
设了密码,VSCode 或 IDEA 里又经常弹窗让输入,挺烦。
但想了想,私钥毕竟就是自己的身份凭证。
如果没有密码保护,哪天电脑中毒、文件被拷走,别人拿到这把 key,基本就能直接冒充访问仓库。
所以我的结论是:
私钥应该设置密码,但不应该每次都手动输入。
解决办法就是用 ssh-agent。
ssh-agent 是什么?
可以简单理解成一个本地的“钥匙管家”。
第一次使用私钥时,输入一次密码。
之后 ssh-agent 会把解锁后的密钥临时缓存起来。
这样私钥文件本身仍然是加密的,但平时 git pull、git push 不会一直打断。
Windows 上怎么配置?
Windows 10 / 11 已经自带 OpenSSH 和 ssh-agent。
先确认 SSH 可用:
ssh -V查看 ssh-agent 服务状态
Get-Service ssh-agent然后用管理员 PowerShell 启动 ssh-agent:
Set-Service -Name ssh-agent -StartupType Automatic
Start-Service ssh-agent再把私钥加入 agent:
ssh-add $env:USERPROFILE\.ssh\id_ed25519第一次会输入私钥密码。 之后可以检查一下:
ssh-add -l能看到 key 信息,就说明已经缓存成功了。
VSCode 和 IDEA 配置
VSCode 通常不用特别配置,但建议统一使用 Windows 自带的 OpenSSH:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"旧版本 IDEA 里可能有 SSH executable 选项,可以选择 Native;如果的版本里没有这个选项,就直接通过 git config --global core.sshCommand 让 Git 使用 Windows 自带的 OpenSSH。