2013-07-01 229 views
5

我想克隆一个仓库,但我得到一个错误混帐克隆:无法创建目录

Could not create directory '/c/Windows/system32/config/systemprofile/.ssh'. 
The authenticity of host '(host here)' can't be established. 

我运行Windows 7和使用tortoiseGit。 我已经生成了一个ssh密钥并将其添加到服务器。 有什么建议我做错了什么?

+0

您正在运行git作为'SYSTEM'用户。为什么? – Chronial

+0

尝试运行一次有高架privs bash并从那里克隆。当ssh要求键入yes来添加主机指纹时,此提示可能是部分内容 –

回答

6

恰好碰到了这个问题,并想后的解决方案。

当使用SSH的Cygwin的版本,你需要创建一个名为HOME的环境变量。如果创建HOME作为一个系统变量,并将其设置为%USERPROFILE%和cmd/bash中被推出,系统(高架),您%HOME%道路将C:\Windows\System32

一个简单的解决方法是硬编码到HOME系统变量您USERPROFILE路径C:\Users\username,但是如果你有,你需要创建相应的环境变量多个用户。

我并没有暗示推出CMD作为SYSTEM但是我是有这个问题,不知道为什么。最安全的选择是只有一个用户环境变量称为%USERPROFILE%和不使用提升的命令提示。

如果您遇到此问题,请运行ECHO %HOME%,您会看到变量正在被读取的内容(或者是否存在)。

1

我用SSH克隆与Windows混帐回购协议;但是在PowerShell中。

$configStoreGitDir = "$GitBaseDir\.git" 
if (!(Test-Path -Path $configStoreGitDir -PathType Container)) { 
    Write-Verbose "Unable to locate local git folder at $GitBaseDir - recreating and cloning" 
    New-Item -Type Directory $GitBaseDir 
    git clone $GIT_REPO $GitBaseDir 
} 

当我试图克隆回购,因为我居然也得到了同样的.ssh目录错误用户:

Cloning into 'C:\Git\test-environments'... 
Could not create directory '/c/Windows/system32/.ssh'. 

而不是硬编码的路径,我设置PowerShell的环境变量$env:USERPROFILE使用HOME就像他在答案中提到的@akevit一样。

$env:HOME = $env:USERPROFILE 
$configStoreGitDir = "$GitBaseDir\.git" 
if (!(Test-Path -Path $configStoreGitDir -PathType Container)) { 
    Write-Verbose "Unable to locate local git folder at $GitBaseDir - recreating and cloning" 
    New-Item -Type Directory $GitBaseDir 
    git clone $GIT_REPO $GitBaseDir 
} 

现在它的工作原理和使用中的用户$env:USERPROFILE\.ssh\目录known_hostsid_rsa私钥。

Cloning into 'C:\Git\test-environments'... 
remote: Counting objects: 460, done. 
remote: Compressing objects: 100% (457/457), done. 

这与最新的Windows 64安装的git:

git --version 
git version 2.6.3.windows.1