2016-03-15 194 views
5

的Git突然停止为我工作。 (我用在Windows 7的Git的Bash) 每次我尝试拉或推说:位于C:\Users\sigod\.sshHOME设置为/c/Users/sigod无法创建目录“/home/username/.ssh”

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

我的SSH密钥。根据variousSOquestions应该工作。

如果我把SSH密钥到C:\Program Files\Git\home\sigod\.ssh然后Git的重新开始工作。但是我怎样才能让它在没有肮脏解决方案的情况下工

+0

你使用Cygwin? – mauro

+0

@mauro,不,我不知道。 – sigod

+0

作为临时解决方案,我为'c:\ Program Files \ Git \ home \ <<===>> c:\ Users'创建了符号链接。 – sigod

回答

1

GitBash是基于其使用传统的Linux权限Cygwin的发动机(具体MINGW64)。

我建议你要确保在正确的位置你的ssh目录存在并且由混帐bash中运行以下命令具有正确的权限:

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

然后运行stat ~/.ssh看到权限正确

改变
ls ~/.ssh 

看到你的关键是正确地安装在正确的位置。

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

您可以通过修改~/.bashrc并添加行更改Linux主export HOME=/some/directory

您可以看到您的GitBash文件系统通过输入命令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) 

如果对应于您的Windows文件系统没有其他的工作,你也可以尝试修改窗口中的%HOME%环境变量,以确保它指向正确的路径。但是,任何窗口的环境变量将被Linux覆盖乏添加到您~/.bashrc

+0

谢谢你的详细回复。不幸的是,我无法测试它,因为问题随着符号链接消失。 – sigod

+0

在我的情况下,所有者是正确的,但有一个权限问题。一个全面的'chmod -R 777 .ssh'修复了这个问题(以及后续的写入known_hosts文件的问题) - 但是当然强烈建议为任何做这件事的人备份现有的'.ssh'文件夹。 –

+1

@SteveChambers嗨,感谢这个问题引起了我的注意。我强烈建议*针对* chmod -R 777 .ssh,因为这可以让任何访客或访客访问您的计算机来查看您的私人ssh密钥。 相反,我会简单地将-R添加到我的命令中以使其递归。我已更新我的答案以反映这一点。 关于你的.ssh文件夹的权限,我建议运行'CHOWN $ USER:$ USER -R〜/ .ssh'使自己的拥有者,并与固定的权限: 运行'chmod 644 -R〜/。ssh' 'chmod 700〜/ .ssh' 'chmod 600〜/ .ssh/id_rsa' – yosefrow