2016-03-15 27 views
5

Git improvvisamente ha smesso di funzionare per me. (Io uso Git Bash sotto Windows 7.) Ogni volta che provo a tirare o spingere che dice:Impossibile creare la directory '/home/username/.ssh'

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

mie chiavi SSH situati in C:\Users\sigod\.ssh e HOME insieme a /c/Users/sigod. Quale dovrebbe funzionare secondo variousSOquestions.

Se inserisco le chiavi SSH nello C:\Program Files\Git\home\sigod\.ssh, Git riprende a funzionare. Ma come posso farlo funzionare senza soluzioni sporche?

+0

Usi Cygwin? – mauro

+0

@mauro, no, non lo faccio. – sigod

+0

Come soluzione temporanea ho creato un collegamento simbolico per 'c: \ Programmi \ Git \ home \ <<===>> c: \ Users'. – sigod

risposta

1

GitBash si basa sul motore Cygwin (in particolare MINGW64) che utilizza le autorizzazioni linux tradizionali.

vi suggerisco di fare sicuro che esista la directory ssh nel posto giusto e ha i permessi giusti eseguendo da Git bash i seguenti comandi:

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

quindi eseguire stat ~/.ssh per vedere che i permessi modificati correttamente

per verificare che la chiave sia installata correttamente nel posto corretto.

È possibile visualizzare quale directory è effettivamente registrata come directory home eseguendo echo ~ o echo $HOME.

Puoi cambiare il tuo Linux Home modificando ~/.bashrc e aggiungendo la riga export HOME=/some/directory

Si può vedere come il filesystem GitBash corrisponde al tuo Windows filesystem digitando il comando 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) 

Se nient'altro funziona, puoi anche provare a modificare la variabile di ambiente %HOME% in Windows per assicurarti che indirizzi al giusto percorso. Ma qualsiasi windows env var verrà sovrascritta da linux vars che aggiungi al tuo ~/.bashrc

+0

Grazie per la risposta dettagliata. Sfortunatamente, non posso testarlo, dato che il problema è scomparso insieme al link simbolico. – sigod

+0

Nel mio caso il proprietario era corretto ma c'era un problema di permessi. Un 'chmod -R 777 .ssh' ha risolto il problema (e un successivo problema con la scrittura nel file known_hosts), ma raccomandava caldamente di fare un backup della cartella' .ssh' esistente per chiunque lo facesse. –

+1

@SteveChambers ciao, grazie per aver portato questo problema alla mia attenzione. Vorrei fortemente raccomandare * contro * chmod -R 777 .ssh in quanto ciò consente a qualsiasi visitatore o ospite del tuo computer di vedere le tue chiavi SSH private. Invece vorrei semplicemente aggiungere -R al mio comando per renderlo ricorsivo. Ho aggiornato la mia risposta per riflettere questo. Per quanto riguarda le autorizzazioni nella cartella .ssh, suggerisco di eseguire 'chown $ USER: $ USER -R ~/.ssh' per diventare proprietario e correggere i permessi con: ' chmod 644 -R ~ /.ssh' 'chmod 700 ~/.ssh' ' chmod 600 ~/.ssh/id_rsa' – yosefrow

Problemi correlati