简体   繁体   中英

Git clone: Could not create Directory

I am trying to clone a repository, but I am getting an error

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

I am running Windows 7 and using tortoiseGit. I have generated a ssh key and added it to server. Any suggestions what am I doing wrong?

Just ran into this issue and wanted to post the solution.

When using a CYGWIN version of SSH you need to create an environment variable called HOME . If you create HOME as a System variable and set it to %USERPROFILE% , and cmd/bash gets launched as system (elevated), your %HOME% path will be C:\\Windows\\System32 .

An easy fix is to hardcode your userprofile path C:\\Users\\username to the HOME system variable, however if you have multiple users you will need to create environment variables accordingly.

I was not implicitly launching cmd as SYSTEM however I was having this problem and not sure why. Safest option would be to only have a user environment variable called %USERPROFILE% and to not use an elevated command prompt.

If you're having this issue then run ECHO %HOME% and you'll see what the variable is being read as (or if it exists).

I was using SSH to clone a git repo with Windows; however in 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
}

When I was trying to clone a repo as a user I was getting the same .ssh directory error:

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

Instead of hardcoding the path, I set the Powershell environment variable $env:USERPROFILE to use HOME just like @akevit mentioned in his answer.

$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
}

Now it works and uses the known_hosts and id_rsa private key in the users $env:USERPROFILE\\.ssh\\ directory.

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

This was with the latest Windows 64bit git install:

git --version
git version 2.6.3.windows.1

Just add HOME variable with C:\\Users\\username value under User Variables

Click here to see sample image

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM