wake-up-neo.com

Verzeichnis '/home/username/.ssh' konnte nicht erstellt werden

Git hörte plötzlich auf, für mich zu arbeiten. (Ich benutze Git Bash unter Windows 7. Ich benutze Cygwin nicht.)

Jedes Mal, wenn ich versuche zu ziehen oder zu drücken, heißt es:

Verzeichnis '/home/sigod/.ssh' konnte nicht erstellt werden

Meine SSH-Schlüssel in C:\Users\sigod\.ssh und HOME sind auf /c/Users/sigod gesetzt. Welches sollte nach verschiedenenSOFragen funktionieren .

Wenn ich SSH-Schlüssel in C:\Program Files\Git\home\sigod\.ssh lege, funktioniert Git wieder. Aber wie kann ich es ohne schmutzige Lösungen zum Laufen bringen?

7
sigod

Git Bash wird mit MSYS2 erstellt, was CygWin sehr nahe kommt . Das Folgende könnte in Ihrem Fall funktionieren, gehen Sie folgendermaßen vor:

  1. Öffnen Sie cmd.exe als Administrator und legen Sie die UmgebungsvariableHOMEso fest, dass sie auf Ihr Benutzerverzeichnis verweist.

    setx -m HOME ^%UserProfile^%
    

    Der obige Befehl setzt HOME =% UserProfile% für Ihre Systemumgebung.

  2. Öffne git bash und stelle sicher, dass /etc/nsswitch.conf eine unkommentierte db_home Zeile enthält. Stellen Sie sicher, dass es mit einer der folgenden Konfigurationen übereinstimmt:

    Option a:

    db_home: env windows cygwin desc
    

    Option b:

    db_home: windows
    
  3. Schließen Sie git-bash vollständig, wenn Sie Optionen in Schritt 2 ausprobieren (um sicherzugehen, dass keine Hintergrundprozesse git-bash am Leben erhalten, melden Sie sich von Windows ab und melden Sie sich wieder an).

Ich habe das oben Gesagte auf eine Antwort gestützt, die die CygWin-Version derselben Frage erklärt .

2
Miron V

GitBash ähnelt Cygwin, das herkömmliche Linux-Berechtigungen verwendet.

Ich schlage vor, Sie stellen sicher, dass Ihr ssh-Verzeichnis an der richtigen Stelle vorhanden ist und die richtigen Berechtigungen hat, indem Sie die folgenden Befehle aus git bash ausführen:

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

führen Sie dann stat ~/.ssh aus, um festzustellen, ob die Berechtigungen korrekt geändert wurden

ls ~/.ssh

um sicherzustellen, dass Ihr Schlüssel ordnungsgemäß am richtigen Ort installiert ist.

Sie können sehen, welches Verzeichnis tatsächlich als Ihr Ausgangsverzeichnis registriert ist, indem Sie echo ~ oder echo $HOME ausführen.

Sie können Ihr Linux-HOME ändern, indem Sie ~/.bashrc ändern und die Zeile export HOME=/some/directory hinzufügen.

Sie können sehen, wie Ihr GitBash-Dateisystem Ihrem Windows-Dateisystem entspricht, indem Sie den Befehl mount eingeben.

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)

Wenn nichts anderes funktioniert, können Sie auch versuchen, die Umgebungsvariable %HOME% in Windows zu ändern, um sicherzustellen, dass sie auf den richtigen Pfad verweist. Aber jede Windows-Umgebungsvariable wird von Linux-Versionen überschrieben, die Sie zu Ihrem ~/.bashrc hinzufügen.

1
yosefrow

Das Gleiche hier: Das Verzeichnis '/home/carlos.leao/.ssh' konnte in Git Bash für Windows, Version 2.17.1.2-64-Bit, nicht erstellt werden. Unter Windows 10.

Lösen Sie mit Sigod Workaround. Aber statt des Erstellens des Ordners struture C:\Programme\Git\home\carlos.leao und des Kopierens des Ordners C:\Users\carlos.leao.ssh habe ich einen symbolischen Link von C:\Users\carlos erstellt .leao.ssh nach C:\Programme\Git\home\carlos.leao.ssh. Um dies zu tun (ersetzen Sie carlos.leao durch Ihren Windows-Benutzernamen):

  1. Erstelle diesen Ordner unter C:\Programme\Git ** home\carlos.leao **
  2. starten Sie CMD.exe
  3. führen Sie den Befehl aus: mklink/d "C:\Users\carlos.leao.ssh" "C:\Program Files\Git\home\carlos.leao.ssh"

Klappt wunderbar!