尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Windows 下 Git 安装与 SSH 密钥配置完全指南

Windows 下 Git 安装与 SSH 密钥配置完全指南 用了这么多年 Git我到现在都记得第一次在 Windows 上装它时被安装向导里那一堆英文选项问懵的场景。更别提后来换电脑重新配环境明明装好了跑git pull却一直报Permission denied (publickey)一查才发现 SSH 密钥根本没加载进 agent。这篇文章就是奔着解决这些问题来的从官网站点下载、安装时的每步勾选、全局身份配置到 SSH 密钥生成与托管平台绑定全套流程我都按 2026 年当前的最新版本逻辑重新梳理了一遍Windows 用户照着做基本不会再翻车。1. 下载前必须想清楚的三件事官方渠道、版本选择和安装预判1.1 为什么我强烈建议绕开第三方下载站很多新手搜“Git 下载”会直接点进下载站页面花花绿绿按钮倒是很大但里面经常捆绑了浏览器助手、压缩软件、各种“加速器”。我帮朋友修电脑时见过不止一次装完 Git 以后桌面多了几个莫名其妙的软件浏览器主页也被改了。这不是夸张是第三方下载站最常见的变现手段。Git 的官方维护版本叫Git for Windows一直由 Git 官方维护团队在负责下载地址就是git-scm.com页面顶部有个很显眼的下载按钮会根据你的系统自动匹配 64 位安装包。如果官网打开速度不理想可以使用国内高校或云厂商的镜像站但同样要认准官方镜像身份不要跑到不知名的“下载站”。注意下载安装包时看一眼文件后缀.exe结尾的是 Windows 安装包。.tar.gz、.zip结尾的是源码或便携版不适合普通用户日常使用。1.2 2026 年了该选哪个版本官网首页通常提供两个下载入口一个是当前最新稳定版另一个是“64-bit Git for Windows Setup”这类指定架构安装包。2026 年的主流 PC 基本都是 64 位系统直接选 64 位即可。如果你的电脑还是老旧的 32 位系统才需要额外找 32 位支持版本但这种设备现在真的很少见了。还有一个容易忽略的点Git 2.x 的版本号一直在滚动更新安装包的版本号不用刻意追求最新稳定版即可。比如你看到git version 2.5x这种版本号直接下载安装就好。老项目一般不会因为你用了新版 Git 而崩掉Git 的向后兼容性做得相当好。判断系统架构最简单的方式是右键“此电脑”→“属性”查看“系统类型”。确认是 64 位操作系统后下载 x64 安装包基本零风险。2. 安装向导里的每个选项到底在问你什么双击安装包后会进入 Git Setup 向导。从“信息”页到“安装完成”大概有七八步每一页都有选项如果只是闭着眼点“Next”大概率会在后面遇到 PATH 不对、编辑器不对、换行符混乱这类问题。我逐个拆开说。2.1 组件勾选和安装路径第一步需要关心的页面是Select Components选择组件。默认勾选了“Git Bash Here”和“Git GUI Here”这两个建议保留它们是 Windows 上使用 Git 最顺手的入口。桌面上如果不想被图标“污染”可以取消勾选“Git Desktop Icon”这个纯粹看个人习惯不影响功能。安装路径我习惯用默认的C:\Program Files\Git不建议塞进带空格或中文的路径虽然新版 Git 已经能处理大部分特殊情况但命令行工具对路径的容错始终有限咱没必要自己给自己挖坑。C:\Program Files\Git这个路径在后续配置 SSH 或某些 IDE 调用 Git 时不会出现怪异的转义符问题。2.2 默认编辑器为什么我不建议保留 Vim接下来是Select Default Editor选择默认编辑器默认选的是 Vim。Vim 本身没问题但对 Windows 新用户极不友好你提交代码时写错字想退出按Esc、:wq、回车这一套操作没练过的话直接卡死在编辑器里。我第一次用 Git 提交时就被 Vim 困住过在命令行里折腾了十分钟才退出来。现在多数人电脑里都装了 VS Code安装向导里也能直接选“Use Visual Studio Code as Gits default editor”。如果你常用其他编辑器选对应的选项就行。核心逻辑是选择你熟悉的那一个而不是教程里默认的那一个。2.3 PATH 环境变量的三种模式怎么选PATH 配置是安装向导里最重要的选项直接影响你在cmd或 PowerShell 里能不能直接敲git命令。三种模式模式含义推荐度Use Git from Git Bash only只能在 Git Bash 里用 git 命令不推荐Git from the command line and also from 3rd-party software把 Git 加入系统 PATHcmd、PowerShell、IDE 都能直接调用强烈推荐Use Git and optional Unix tools from the Command Prompt额外把 Unix 工具也放进 PATH可能与系统命令冲突不推荐默认选的是第二项这也是我多年反复推荐的选项。选这项之后你在 Windows Terminal、PowerShell、VS Code 内置终端里敲git都能直接识别省去很多环境变量手动画蛇添足的麻烦。配置完成后可以在任意终端验证一下git --version如果输出类似git version 2.47.1.windows.1说明 PATH 配置成功。2.4 换行符转换、终端模拟器这些默认值动不改安装向导到了Configure the line ending conversions配置行尾转换时大部分人开始纠结。这里默认选第一项“Checkout Windows-style, commit Unix-style line endings”对应core.autocrlftrue我建议普通用户保留默认。简单解释为什么Windows 用CRLF来换行Linux/macOS 用LF。如果不做转换你在 Windows 上写的脚本提交到远端后Linux 服务器上可能出现^M这种结尾乱码。Git 在检出时自动转成CRLF提交时又自动转回LF就能把这种冲突化解于无形。再往下Choose a credential helper默认是“Git Credential Manager”保留即可。Enable file system caching也建议保留能提升 Git 读写文件时的性能。还有一个选项是“Use bundled OpenSSH”还是“Use external OpenSSH”。这里务必选Use bundled OpenSSH也就是 Git 自带的 SSH 实现。有些同学电脑上装过 Windows 自带的 OpenSSHC:\Windows\System32\OpenSSH版本和 Git 自带的不一定一致混用容易出现密钥路径识别不一致的问题。3. 装完之后的三条命令把 Git 先“激活”再干活装好 Git 只是第一步。直接开始git clone大概率会被身份信息或凭据问题卡住。我建议按照下面的顺序做一次初始化。3.1 打开 Git Bash 的正确姿势安装完之后在任意文件夹里右键就能看到“Git Bash Here”。我推荐在某个专门放代码的目录下打开比如建一个D:\code或C:\Users\你的用户名\code。在这个目录右键 → Git Bash Here打开后的路径会自动定位到当前文件夹很方便。Git Bash 的界面是黑底白字的终端窗口它可以执行绝大多数 Git 命令同时支持很多 Linux 常用命令比如ls、cd、touch、rm。对于从 macOS 或 Linux 转过来的用户来说这种感觉很像回到家。3.2 设置 user.name 和 user.email身份信息必须设置否则提交代码时 Git 会强制要求你补全。打开 Git Bash 执行git config --global user.name 你的名字 git config --global user.email 你的邮箱这两条命令设置了全局身份信息之后的每一次提交都会带上这两个字段。需要说明的是user.name不一定非要填真名但建议填一个团队能认出你的名字。user.email建议与代码托管平台的账号邮箱一致提交记录才能正确关联到你的账号。查看当前配置可以执行git config --global --list我见过有人抄教程时把邮箱写错导致 GitHub 上的提交不显示绿色小方块头像也一直是灰色。这种问题追溯起来很麻烦不如一开始就填对。3.3 记住密码这件事别依赖“缓存密码”选项很多人在配置完身份信息后第一次 push 时 Git 会弹出一个登录窗口输入账号密码后就能正常推送。这个功能来自Git Credential Manager它会把凭据存在 Windows 的凭据管理器里下次推送不再询问。这套机制本身没问题但有几个注意点如果公司 GitLab 或代码托管平台启用了双重认证密码框里填的不是登录密码而是访问令牌Personal Access Token。凭据管理器在 HTTPS 方式下生效SSH 方式完全不经过它。如果有一天你换了账号密码发现 Git 一直用旧凭据报Authentication failed需要到“控制面板 → 用户账户 → 凭据管理器 → Windows 凭据”里删掉对应的 Git 凭据记录重新触发登录。控制面板 用户账户 凭据管理器 Windows 凭据删掉那一条以git:https://github.com开头的记录下次操作就会重新弹窗输入新账号密码。这个排查步骤我教过很多人属于“知不知道能省半小时”的典型问题。4. SSH 密钥生成全流程从选密钥类型到加载到本地HTTPS 方式每次推送都要走凭据管理器虽然能记住密码但遇到自建 GitLab 或者需要多账号切换时略显繁琐。SSH 密钥方式更干净一把私钥配一把公钥公钥放到托管平台私钥留在本地之后推送拉取都不需要再输密码。下面从零开始走一遍。4.1 为什么我推荐用 Ed25519 而不是 RSA密钥类型方面新手通常会在 RSA 和 Ed25519 之间纠结。GitHub、GitLab、Gitee 现在都支持 Ed25519它生成的密钥更短、生成速度快、安全性也足够。RSA 4096 也不是不行但密钥文件更长计算开销更大属于“能用但没必要”的老方案。除非你连接的服务器还是老旧的 GitLab 版本或不支持 Ed25519 的自建平台否则我建议统一用 Ed25519。提示如果公司内部平台特别老连 Ed25519 都不认识那才退回去用ssh-keygen -t rsa -b 4096。4.2 ssh-keygen 实操与每条参数的意义打开 Git Bash执行ssh-keygen -t ed25519 -C your_emailexample.com解释一下各段参数-t ed25519指定密钥类型为 Ed25519。-C添加注释。这里常用邮箱作用是让别人在查看公钥时知道这把钥匙属于谁本身不影响加密功能。执行后回车终端会询问Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_ed25519):直接回车使用默认路径即可。接下来会要求输入 passphrase口令Enter passphrase (empty for no passphrase):这里可以选择空着直接回车以后用密钥时就不用输口令。但我个人建议输入一个口令哪怕设个简单的也行私钥文件一旦泄露口令是最后一道防线。当然设了口令后会带来一个副作用——每次使用都要输入一次口令。所以很多开发者干脆不设完全凭私钥文件权限来保证安全。如果设了口令下面第三步的 ssh-agent 就非常重要了它能在一次会话内帮你记住口令避免每次操作都重复输入。4.3 把私钥加载到 ssh-agent这是 Windows 用户最容易漏的环节密钥生成好了但如果你直接去ssh -T gitgithub.com测试很可能会收到Permission denied (publickey)。原因很简单SSH 客户端默认只会读取.ssh目录下固定文件名如id_rsa、id_ed25519的密钥有时候找得到有时候因为权限或配置问题找不到还可能因为设置了 passphrase 需要交互输入。解决办法是把私钥显式加载到ssh-agent里。Git Bash 中执行eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519第一条命令启动 ssh-agent第二条命令把私钥添加进去。如果刚才设置了 passphrase这里会要求输入一次之后当前终端会话内不再重复询问。但这里有一个 Windows 特有的坑Git Bash 窗口一关ssh-agent 进程就结束了下次打开终端又要重新执行一遍ssh-add。解决方案有两种方案一每次开新终端都手动执行前两条命令简单但麻烦。方案二把 Windows 系统自带的 OpenSSH Agent 服务开机启动并设置为自动。这样 ssh-agent 以后台服务形式运行密钥一次加载长期有效。操作如下以管理员身份打开 PowerShell执行Get-Service -Name ssh-agent如果服务状态是禁用执行Set-Service -Name ssh-agent -StartupType Automatic Start-Service ssh-agent再回到普通终端执行ssh-add ~/.ssh/id_ed25519把私钥加进去。之后只要 Windows 系统不重启ssh-agent 会一直运行。重启电脑后服务会跟着系统自动启动但已添加的密钥可能需要重新ssh-add这是正常现象。注意不要同时混用 Git 自带的 ssh-agent 和 Windows 的 OpenSSH Agent 服务否则可能出现密钥加载了但实际连接时又被另一个 agent 拦截的问题。我建议要么统一走 Git Bash 里的eval $(ssh-agent -s)方式每次终端临时加载要么统一走 Windows 服务方式开机自启长期有效。二选一即可。5. 公钥上云GitHub、Gitee、GitLab 的配置入口与验证5.1 把公钥内容复制到托管平台私钥生成后同目录下会多一个.pub结尾的公钥文件这才是要放到托管平台上的内容。在 Git Bash 里查看公钥内容cat ~/.ssh/id_ed25519.pub输出是一行ssh-ed25519 AAAA... 你的邮箱格式的字符串。从行首复制到行尾不要漏字符。不同托管平台的公钥添加入口GitHub右上角头像 → Settings → SSH and GPG keys → New SSH key。Gitee设置 → 安全设置 → SSH 公钥。GitLab左侧偏好设置 → SSH 密钥不同版本界面略有差异但关键词都是“SSH Keys”。把公钥粘贴进去标题随意保存即可。这一步在三个平台的操作逻辑完全相同区别只在入口位置。5.2 用 ssh -T 验证连通性添加完公钥后回到 Git Bash 测试ssh -T gitgithub.com如果首次连接会提示The authenticity of host github.com (IP) cant be established. Are you sure you want to continue connecting (yes/no)?输入yes回车。之后如果看到类似Hi 用户名! Youve successfully authenticated, but GitHub does not provide shell access.说明 SSH 密钥已经配置成功。同理Gitee 验证命令是ssh -T gitgitee.com成功会提示“Hello 用户名”。GitLab 验证命令是ssh -T gitgitlab.com成功会提示Welcome to GitLab, 用户名!5.3 多平台多账号的 config 文件怎么管理日常开发中很多人同时使用 GitHub 个人仓库、Gitee 仓库和公司 GitLab。如果每把密钥都叫id_ed25519系统只会默认加载一个就会遇到“GitHub 能连通Gitee 报权限错误”的怪问题。解决办法在.ssh目录下新建一个config文件用不同 Host 映射不同密钥。例如# 个人 GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github # 工作 GitLab Host gitlab.company.com HostName gitlab.company.com User git IdentityFile ~/.ssh/id_ed25519_gitlab生成不同平台的密钥时不要一路回车用默认文件名而是指定不同的文件名ssh-keygen -t ed25519 -C githubexample.com -f ~/.ssh/id_ed25519_github-f参数指定密钥保存为id_ed25519_github。按同样的方式生成id_ed25519_gitlab再在 config 中指定路径。这样配置之后git clone gitgithub.com:用户名/仓库.git会自动使用id_ed25519_github而克隆公司仓库时自动使用另一把。我有一个经验是config 文件的Host名称不一定要和真实域名一致但它会被 Git 的 SSH 连接当作别名使用。如果写错 HostSSH 就匹配不到对应的 IdentityFile会回到默认密钥导致权限失败。所以配置好之后最好逐个ssh -T验证一遍。6. 装完以后随手要做的事与高频问题排查6.1 CRLF 警告它不是错误但会吵得你心烦如果你用某个项目时执行git add后终端突然冒出一堆warning: LF will be replaced by CRLF不用慌这是 GIt 在按之前说到的core.autocrlftrue规则做行尾转换的正常提示。它只是告知你“文件里的换行符会从 LF 转成 CRLF”并不是错误。但如果你在团队项目中频繁看到这个警告或者发现 diff 里出现大量“整行变动”的情况说明团队里混用了 Windows 和 Linux/macOS 开发环境且缺少统一的换行符约定。这时候最规范的做法不是让每个人改全局配置而是在仓库根目录加一个.gitattributes文件统一锁定模块文件的行尾* textauto *.sh text eollf *.bat text eolcrlf这样的好处是不管成员在什么系统上开发Git 都会按规则强制转行尾从源头杜绝“换行符幽灵改动”。6.2 VS Code 集成 Git 时需要留意的细节现代前端和后端开发者几乎都在 VS Code 里写代码VS Code 自带的源代码管理面板已经能覆盖大多数 Git 操作。但有几个细节值得花两分钟确认第一VS Code 内置终端默认可能是 PowerShell如果你前面安装时选择了“Git from the command line...”PowerShell 里敲git是能直接识别的。如果识别不了多半是 PATH 没配置成功需要检查上一节提到的安装选项。第二VS Code 第一次提交代码时如果弹出“没有配置 Git 用户信息”之类的提示说明全局 user.name 和 user.email 没配回到第 3 节把配置补上。第三VS Code 的源代码管理面板点击“拉取”“推送”时如果同时配置了多个远端注意分支的 upstream 设置。常见做法是git push -u origin main-u参数把本地分支和远端分支建立跟踪关系以后直接git push或git pull就能自动匹配远端分支不用每次写全。6.3 重启电脑后密钥失效、多账号串key问题的处置最后一个高频问题是明明密钥配置成功过重启电脑或者隔段时间后突然git pull又报Permission denied (publickey)。排除法按顺序来确认私钥文件还在。很多人清理临时文件时误删过.ssh目录。确认 ssh-agent 里有密钥执行ssh-add -l如果输出The agent has no identities.说明密钥没有加载重新执行ssh-add ~/.ssh/id_ed25519。确认没有多个 ssh-agent 在打架。Git Bash 自带的 agent 和 Windows 服务版 agent 同时存在时密钥可能被加载进其中一个但连接请求被另一个接收。我的处理习惯是工作机上只启用 Windows 的 OpenSSH Agent 服务Git Bash 里不再手动eval $(ssh-agent -s)临时用的电脑则直接用 Git Bash 手动加载不用 Windows 服务。最后看.ssh目录下是否有 config 文件写错了 Host 映射。多账号场景下八成问题都出在这里。这一套排查顺序我基本闭着眼睛背下来了因为每次帮别人处理 SSH 问题最后都能在这四步里找到答案。最后再分享一个我个人的使用习惯无论重装多少次系统.ssh目录里只保留私钥、公钥和 config 文件不要把整个.ssh文件夹丢到网盘或云笔记里。私钥一旦泄露等同于别人拿到了你所有代码仓库的入场券。换电脑时重新生成一把新密钥把旧公钥从平台上删掉花不了五分钟但能避免很多隐患。Git 本身是个极好用的工具安装和配置的门槛一次跨过去之后后面就是纯粹的舒服了。
返回列表