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

时间:2016-03-15 12:15:13

标签: windows bash git ssh

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

每当我试图拉动或推动它时说:

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

位于C:\Users\sigod\.sshHOME的我的SSH密钥设置为/c/Users/sigod。哪个应该符合various SO questions

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

5 个答案:

答案 0 :(得分:2)

Git Bash是使用MSYS2 which is a very close cousin to CygWin构建的。以下可能只适用于您的情况,请按照以下步骤操作:

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

    setx -m HOME ^%UserProfile^%
    

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

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

    选项a:

    db_home: env windows cygwin desc
    

    选项b:

    db_home: windows
    
  3. 在第2步中尝试选项时完全关闭git-bash(为了确保没有后台进程保持git-bash存活,从Windows注销并重新登录)。

  4. 我将上述内容基于解释CygWin version of the same question的答案。

答案 1 :(得分:1)

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

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

mkdir ~/.ssh
chown $USER:$USER -R ~/.ssh

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

ls ~/.ssh

看到您的密钥已正确安装在正确的位置。

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

您可以修改~/.bashrc并添加第export HOME=/some/directory

来更改您的Linux主页

通过输入命令mount

,您可以看到GitBash文件系统与Windows文件系统的对应关系
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)

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

的linux变量所覆盖

答案 2 :(得分:0)

同样的事情:无法在Git Bash for Windows中创建目录'/home/carlos.leao/.ssh',版本为2.17.1.2-64-bit。使用Windows 10。

用sigod解决方法解决。但是创建文件夹结构C:\ Program Files \ Git \ home \ carlos.leao并将文件夹C:\ Users \ carlos.leao.ssh复制到其中我已经创建了一个符号链接来自C:\ Users \ carlos .leao.ssh到C:\ Program Files \ Git \ home \ carlos.leao.ssh。要做到这一点(用你的Windows用户名替换carlos.leao):

  1. 创建此文件夹struture C:\ Program Files \ Git ** home \ carlos.leao **
  2. 启动CMD.exe
  3. 运行命令:mklink / d“C:\ Users \ carlos.leao.ssh”“C:\ Program Files \ Git \ home \ carlos.leao.ssh”
  4. 像魅力一样!

答案 3 :(得分:0)

确保您正在执行哪个[ssh.exe]! $其中ssh

D:\xxxx\bin\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

在我的情况下,我的导出路径中还有另一个ssh.exe。 (即:D:\ xxxx \ bin \ ssh.exe)

因此,我删除了ssh.exe并保留了原始文件! (C:\ Program Files \ Git \ usr \ bin \ ssh.exe)

现在一切都很好!

答案 4 :(得分:0)

你可以使用 cd ~/.ssh/ 而不是 ~/.ssh

cd ~/.ssh/