🔹 核心问题原因

  1. Git Bash / OpenSSH 在解析 C:\Users\中文用户名\.ssh 路径时,可能因为编码问题导致乱码(/c/Users/\325\324\261\370/.ssh)。

  2. 这样 SSH 找不到私钥文件,就会报错:

    Could not create directory '/c/Users/\325\324\261\370/.ssh'
    Permission denied (publickey).
    

  3. 解决的思路:

    • 方法 1(首推):更换 SSH 私钥识别目录(自定义位置)

    • 方法 2:新建英文用户名的系统账户

    • 方法 3:改当前用户名为英文(代价大)

    • 方法 4:用 Windows 自带 OpenSSH + PowerShell 代替 Git Bash 的 SSH


📌 方案 1(推荐)——更换 SSH 识别目录

原理

SSH 默认会在 $HOME/.ssh 查找私钥,我们可以通过设置环境变量,让 $HOME 指向一个英文路径,从而绕过中文用户名路径的问题。


步骤

1. 在 D 盘或 C 盘新建一个英文文件夹

例如:

D:\git-keys
2. 把 .ssh 文件夹移动过去

如果你已有 SSH key:

C:\Users\中文用户名\.ssh

复制到:

D:\git-keys\.ssh

如果没有,直接在新位置生成:

ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com" -f /d/git-keys/.ssh/id_rsa

3. 修改 Git Bash 环境变量(临时生效)

在 Git Bash 里:

export HOME=/d/git-keys

然后测试:

ssh-add ~/.ssh/id_rsa
ssh -T git@gitcode.com

如果能成功认证,就说明 SSH 已经从新位置读取密钥了。


4. 永久生效(推荐)

方法 A:Git Bash 配置

  1. 找到 Git Bash 安装目录:

    例如:C:\Program Files\Git\etc\profile
    

  2. 在文件开头加:

    export HOME="/d/git-keys"
    

方法 B:Windows 环境变量

  1. 打开 系统属性 → 高级 → 环境变量

  2. 新建或修改用户变量:

    HOME = /d/git-keys
    

  3. 重新打开 Git Bash,执行:

    echo $HOME
    

    确认是 /d/git-keys


5. 验证
ssh-add -l
ssh -T git@gitcode.com

确认能正常识别 SSH 私钥并完成连接。


方案 2——创建英文用户名的新账户

  • 新建 Windows 账号,用户名全英文(例如 devuser)。

  • 把代码、Git 配置、.ssh 都放到这个账户下。

  • 切换账号工作。

  • 优点:系统级彻底解决编码问题。

  • 缺点:需要切换账号,麻烦。


方案 3——改现有用户名为英文(高风险)

  • 通过控制面板 → 用户账户 → 更改用户名,把中文改成英文。

  • 用户文件夹路径不会变(除非修改注册表并迁移数据),容易导致系统应用出错。

  • 不推荐,风险大。


方案 4——使用 Windows 自带 OpenSSH(绕过 Git Bash)

  • Windows 10/11 自带 OpenSSH,可在 PowerShell 直接使用 SSH。

  • 配置方法:

    1. 把 SSH key 放到:

      C:\Users\中文用户名\.ssh
      

    2. 打开 PowerShell:

      ssh-add $env:USERPROFILE\.ssh\id_rsa
      ssh -T git@gitcode.com
      

  • 优点:不用改 HOME。

  • 缺点:仅限 PowerShell / CMD,不适合纯 Git Bash 环境。


📌 建议

如果你是个人电脑,方案 1(更换 SSH 识别目录) 是最稳妥的,不会影响系统、账号、软件。
只要配置好 HOMESSH 环境变量,就可以长期稳定使用。

更多推荐