无法创建目录'/home/username/.ssh'

sig*_*god 7 windows git ssh bash

Git突然停止为我工作.(我在Windows 7下使用Git Bash.我没有使用Cygwin.)

每次我试图拉或推它说:

Could not create directory '/home/sigod/.ssh'

我的SSH密钥位于C:\Users\sigod\.sshHOME设置为/c/Users/sigod.哪个应该根据各种 SO 问题工作.

如果我将SSH密钥放入,C:\Program Files\Git\home\sigod\.ssh那么Git将再次开始工作.但是如何在没有肮脏解决方案的情况下使其工作

Mir*_*kiy 9

Git Bash 是使用 MSYS2 构建的,它是 CygWin 的近亲。以下可能仅适用于您的情况,请按照以下步骤操作:

  1. 以管理员身份打开cmd.exe,设置HOME系统环境变量指向你的用户目录。

    setx -m HOME ^%UserProfile^%
    
    Run Code Online (Sandbox Code Playgroud)

    上述命令将为您的系统环境设置HOME=%UserProfile%

  2. 打开 git bash,并确保/etc/nsswitch.conf文件包含未注释的db_home行条目。确保它匹配以下配置之一:

    选项一:

    db_home: env windows cygwin desc
    
    Run Code Online (Sandbox Code Playgroud)

    选项b:

    db_home: windows
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在第 2 步中尝试选项时完全关闭 git-bash(确保没有后台进程使 git-bash 保持活动状态,从 Windows 注销并重新登录)。

我基于以上解释同一问题CygWin 版本的答案。


yos*_*row 1

GitBash 类似于使用传统 Linux 权限的 Cygwin。

我建议您通过从 git bash 运行以下命令来确保您的 ssh 目录存在于正确的位置并且具有正确的权限:

mkdir ~/.ssh
chown $USER:$USER -R ~/.ssh
Run Code Online (Sandbox Code Playgroud)

然后运行stat ~/.ssh查看权限是否正确更改

ls ~/.ssh
Run Code Online (Sandbox Code Playgroud)

查看您的密钥是否正确安装在正确的位置。

echo ~您可以通过运行或查看哪个目录实际注册为您的主目录echo $HOME

~/.bashrc您可以通过修改并添加以下行来更改您的 linux HOMEexport HOME=/some/directory

您可以通过键入命令来查看 GitBash 文件系统与 Windows 文件系统的对应关系mount

MINGW64 /c $ mount
C:/Program Files/Git on / type ntfs (binary,noacl,auto)
C:/Program Files/Git/usr/bin on /bin type ntfs (binary,noacl,auto)
C:/Users/MyUser/AppData/Local/Temp on /tmp type ntfs (binary,noacl,posix=0,usertemp)
C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto)
D: on /d type ntfs (binary,noacl,posix=0,user,noumount,auto)
Run Code Online (Sandbox Code Playgroud)

如果没有其他办法,您还可以尝试修改%HOME%Windows中的环境变量以确保它指向正确的路径。但是任何 Windows 环境变量都会被您添加到的 linux 变量覆盖~/.bashrc