You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下Git Bash配置SSH连接GitHub路径错误问题求助

解决Windows Git Bash连接GitHub时的SSH目录创建错误

我之前也碰到过一模一样的问题,折腾了好一会儿才搞定,给你几个靠谱的解决思路,按顺序试试:

1. 先确认Git Bash的家目录映射是否正确

Git Bash里的~应该指向你Windows用户目录C:/Users/my-username,但有时候映射会出错。打开Git Bash,输入:

echo $HOME

如果输出不是/c/Users/my-username,那就是家目录的问题,这会导致ssh找不到你已经生成的密钥。

修复家目录映射

  • 方法一:修改Git Bash的passwd文件
    在Git Bash里编辑/etc/passwd(可以用vim /etc/passwd或者nano /etc/passwd),找到你的用户行(通常是最后一行,格式类似username:x:1000:1000::/home/username:/bin/bash),把其中的/home/username改成/c/Users/my-username,保存退出后重启Git Bash。

  • 方法二:设置Windows系统环境变量
    打开Windows的「系统属性」→「高级」→「环境变量」,在用户变量里新增一个HOME变量,值设为C:\Users\my-username,确定后重启Git Bash,再输echo $HOME应该就对了。

2. 手动指定SSH密钥路径(如果家目录没问题但还是报错)

有时候Git Bash的ssh客户端会默认找/home/<username>/.ssh,哪怕$HOME是对的,这时候可以直接在SSH配置里指定密钥位置:

  1. 在Git Bash里创建(如果没有的话)~/.ssh/config文件:
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config
    
  2. 编辑这个文件,添加以下内容:
    Host github.com
      HostName github.com
      User git
      IdentityFile /c/Users/my-username/.ssh/id_rsa
      IdentitiesOnly yes
    
    这里的IdentityFile直接写死你密钥的绝对路径,避免路径解析问题。

3. 检查并修复文件权限

Windows下的权限设置有时候会影响SSH,确保你的.ssh文件夹和密钥文件权限正确:
在Git Bash里执行:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

这样设置后,只有你自己能读写密钥文件,符合SSH的安全要求。

4. 排查SSH客户端冲突

有时候Windows自带的SSH客户端和Git Bash的会冲突,导致路径解析错误。在Git Bash里输入:

which ssh

如果输出是/usr/bin/ssh,那是Git自带的客户端,没问题;如果是其他路径(比如/c/Windows/System32/OpenSSH/ssh.exe),说明用了系统的SSH,这时候可以调整环境变量,把Git的usr/bin路径移到系统OpenSSH路径前面,或者直接在Git Bash里用绝对路径调用Git的ssh:

/usr/bin/ssh git@github.com

测试能不能连接成功。

最后测试

做完上面的步骤后,在Git Bash里输入:

ssh -T git@github.com

如果看到Hi <your-github-username>! You've successfully authenticated...的提示,就说明问题解决了。

内容的提问来源于stack exchange,提问作者François Romain

火山引擎 最新活动