前言

明明安装了Git,却在克隆仓库时接连遭遇“命令无法识别”和“权限被拒绝”?本文将带你系统解决 Windows环境下Git与SSH配置的完整难题。

问题

在Windows Terminal中尝试克隆GitHub仓库时,我遇到了两个经典问题:

1
2
3
4
5
6
# 第一阶段:Git命令不存在
git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称...

# 第二阶段:SSH密钥认证失败
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

这两个问题分别对应着不同的配置层面,需要系统性地解决。下面是我解决问题的完整流程。

解决

解决Git命令识别问题

1. 检查Git安装状态

首先需要确认Git是否真的已经安装。在PowerShell中运行:

1
git --version

如果返回版本号(如 git version 2.41.0),说明Git已正确安装且PATH配置正常。如果提示“不是内部或外部命令”,则需要重新安装。

2. 正确安装Git for Windows

访问 Git官方网站 下载安装程序。在安装过程中,最关键的一步出现在配置PATH环境变量时:

务必选择“Use Git from the command line and also from 3rd-party software”

这个选项会让安装程序自动将Git的可执行文件路径添加到系统的PATH环境变量中,这是解决命令识别问题的关键。

3. 手动配置PATH(如已安装但未识别)

如果Git已安装但命令仍不可用,需要手动添加Git路径到系统PATH:

  1. Win + S搜索“环境变量”,选择“编辑系统环境变量”
  2. 点击“环境变量”按钮
  3. 在“系统变量”部分找到并选中Path,点击“编辑”
  4. 点击“新建”,添加Git的bin目录路径,通常为:
  • C:\Program Files\Git\bin
  • C:\Program Files\Git\cmd(某些版本)

重要提示:修改PATH后,必须关闭所有终端窗口并重新打开,更改才会生效。

配置SSH密钥认证

Git命令可用后,使用SSH协议克隆仓库时出现了第二个问题:公钥认证失败。这是因为本地没有配置SSH密钥对,或者公钥未添加到GitHub账户。

1. 检查现有SSH密钥

在PowerShell中查看是否已有SSH密钥:

1
2
3
4
5
6
7
# 查看.ssh目录内容
dir $env:USERPROFILE\.ssh

# 正常情况应看到类似以下文件:
# id_ed25519 # 私钥(保密!)
# id_ed25519.pub # 公钥(可分享)
# known_hosts # 已知主机记录

如果只有known_hosts文件(记录已连接过的主机信息),说明还没有生成个人密钥对。

2. 生成新的SSH密钥对

使用Ed25519算法生成新的密钥对(比传统的RSA更安全且高效):

1
ssh-keygen -t ed25519 -C "your_email@example.com"

按提示操作:

  • 保存路径:直接回车使用默认位置 (C:\Users\你的用户名\.ssh\id_ed25519)
  • 设置密码:可为空(直接回车),或设置增强安全性

成功后会看到密钥的“随机艺术图案”,这是密钥的可视化表示。

3. 管理SSH代理服务

SSH代理可以帮助管理密钥,避免每次操作都需输入密码。

1
2
3
4
5
6
7
8
# 方案A:如果只需临时使用,启动代理而不修改服务
Start-Service ssh-agent -ErrorAction SilentlyContinue

# 方案B:需要永久配置时,以管理员身份运行
# 1. 右键点击Windows Terminal/PowerShell,选择“以管理员身份运行”
# 2. 执行以下命令:
Get-Service ssh-agent | Set-Service -StartupType Manual -PassThru | Start-Service
# 3. 关闭管理员终端,返回普通终端继续操作

4. 将私钥添加到SSH代理

1
2
3
4
# 添加生成的Ed25519密钥到代理
ssh-add $env:USERPROFILE\.ssh\id_ed25519

# 如果添加成功,将看到“Identity added”确认信息

5. 复制公钥到剪贴板

1
2
# 查看公钥内容(以手动复制)
type $env:USERPROFILE\.ssh\id_ed25519.pub

公钥内容看起来像这样(单行):

1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJL3p2jZh7T2p3FQ5Qp7m2d6JKLp0E2UqJtB your_email@example.com

6. 将公钥添加到GitHub账户

  1. 登录GitHub,点击右上角头像 → Settings
  2. 左侧边栏选择 SSH and GPG keys
  3. 点击 New SSH key
  4. Title:起一个识别名称(如“Windows Desktop 2024”)
  5. Key:粘贴刚才复制的公钥内容(完整一行)
  6. 点击 Add SSH key 完成添加

测试与验证

1. 测试SSH连接

1
ssh -T git@github.com

首次连接会看到主机验证提示:

1
2
3
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 继续,成功后显示:

1
Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

2. 最终克隆测试

现在可以成功克隆最初失败的仓库了:

1
git clone git@github.com:FelicxFoster/MyHexo.git

问题排查与进阶技巧

  1. 如果仍然失败:详细调试模式

使用-v(verbose)参数查看SSH连接详细信息:

1
ssh -T -v git@github.com

这会显示详细的连接过程,帮助定位问题所在。

  1. Windows权限问题修复

如果遇到私钥权限问题,可以修复文件权限:

1
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "$env:USERNAME:R"
  1. 如果你有多个Git服务账户(如GitHub、GitLab等),可以创建~/.ssh/config文件管理不同主机的密钥:
1
2
3
4
5
6
7
8
9
10
11
12
# ~/.ssh/config
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes

Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_gitlab
IdentitiesOnly yes

总结

  1. Git命令识别:确保Git正确安装且bin目录已添加到系统PATH
  2. SSH密钥生成:使用ssh-keygen -t ed25519生成密钥对
  3. 代理服务管理:启动ssh-agent服务并添加私钥
  4. 公钥添加:将.pub文件内容完整添加到GitHub的SSH keys设置
  5. 连接测试:使用ssh -T git@github.com验证配置成功

遵循这个系统性的配置流程,你将彻底解决Windows下Git与SSH的配置问题,享受流畅的代码克隆与管理体验。


©2018 - Felicx 使用 Stellar 创建
总访问 113701 次 | 本页访问 326
共发表 101 篇Blog · 总计 149.2k 字