Frage Wie kann ich Git für Windows mitteilen, wo ich meinen privaten RSA-Schlüssel finde?


Mein Git-Setup läuft unter Linux gut, aber wenn ich versuche, Dinge unter Windows einzurichten (mit Git für Windows und SchildkrötenGit), Ich weiß nicht, wo ich meinen privaten SSH-Schlüssel (oder, noch besser, wie ich es erzählen soll) setzen kann ssh wo es sich befindet). Ich benutze die Standard ssh.exe Option während der Installation von Git für Windows. Das Setup funktioniert ordnungsgemäß, wenn ich die Kennwortauthentifizierung (anstelle von RSA) auf dem Server zulasse.


461
2017-10-25 16:45


Ursprung


Ich habe das gleiche Problem, ich kann ssh in meine Dev-Box mit einem öffentlichen Schlüssel als "root" mit dem "Git Bash" Programm, das mit "Git für Windows" installiert ist, aber ich kann nicht als "git" mit meinem einloggen Schlüssel, obwohl ich meine "authorized_keys" -Datei von meinem "root" zu meinem "git" -Benutzer kopiert habe und die Besitzer und Berechtigungen richtig gesetzt habe. Warum kann ich mich nicht als "git" anmelden, wenn "root" mit der gleichen "authorized_keys" -Datei arbeitet. Anstelle von "git" gibt es alle privaten Schlüssel weiter, die genau dieselben sind, die mit "root" arbeiten und nach einem Passwort fragen. Dies ist übrigens ein Centos 5.5 Server. - Jarrod Roberson
@fuzzy lollipop: Haben Sie die richtigen Berechtigungen für die Datei authorized_keys Ihres Git-Benutzers? Es sollte chmod 600 sein und sollte dem git-Benutzer gehören. Wenn es dem Root-Benutzer gehört, wird es nicht funktionieren - Dan McClain
Ja, alle Dateien und Verzeichnisse sind die richtigen Besitzer und Berechtigungen - Jarrod Roberson


Antworten:


Für Git Bash

Wenn du msysgit ausführst (ich gehe davon aus, dass du es bist) und Git Bash ausführen willst (ich empfehle es über TortoiseGit, aber ich lege mich jetzt mehr an die CLI als die GUI), musst du herausfinden, was dein Heimatverzeichnis für Git ist Bash, indem Sie es starten und dann eingeben pwd (Unter Windows 7 wird es so etwas wie C:\Users\phsr Meiner Ansicht nach). Während du in Git Bash bist, solltest du mkdir .ssh.

Nachdem Sie das Home-Verzeichnis und a .ssh Unter diesem Ordner möchten Sie PuTTYgen öffnen und den Schlüssel (.ppk-Datei) öffnen, den Sie zuvor erstellt haben. Sobald der Schlüssel geöffnet ist, möchten Sie auswählen Conversions -> Export OpenSSH key und speichern Sie es in HOME\.ssh\id_rsa. Nachdem Sie den Schlüssel an dieser Stelle haben, erkennt Git Bash den Schlüssel und verwendet ihn.

Hinweis: Kommentare zeigen an, dass dies nicht in allen Fällen funktioniert. Möglicherweise müssen Sie den OpenSSH-Schlüssel nach kopieren Program Files\Git\.ssh\id_rsa (oder Program Files (x86)\Git\.ssh\id_rsa).

Für TortoiseGit

Wenn Sie TortoiseGit verwenden, müssen Sie den SSH-Schlüssel über einstellen paceys Anweisungen. Sie müssen das für jedes Repository tun, mit dem Sie TortoiseGit verwenden.


459
2017-11-05 17:18



paceys Anweisungen für tortoisegit funktionieren erst, wenn Sie das Repository haben (da die Konfigurationseinstellung 'remote' nicht angezeigt wird, es sei denn, Sie agieren in einem Repo) und Sie können das Repository wahrscheinlich nicht an erster Stelle erhalten, wenn Sie können. ' t authentifizieren Sie sich, um vom Ursprung zu klonen. Knifflig! - Kylotan
Mit GitBash fand ich heraus, dass ich meine kopieren musste ~/.ssh/id_rsa Datei an Program Files\Git\.ssh\id_rsa - Das war ein wenig verwirrend, aber jetzt können IntelliJ und Windows cmd Push-to-git-Repositories, die Schlüsselauthentifizierung verwenden. - JP.
Gleichfalls. Ich habe gerade git-for-windows installiert, ich starte es von cmd.exe. Ich musste die Dateien ablegen id_rsa und id_rsa.pub in c:\program files (x86)\Git\.ssh . Das .ssh Dir war schon anwesend. Danke, JP. - Cheeso
Der zweite Absatz war golden. :) - Bjørn
@Damon: Es sollte sein id_rsa ohne die Erweiterung. Das ist der Dateiname, es ist kein Verzeichnis - Dan McClain


Mit dem integrierten SSH-Client, der mit Git für Windows geliefert wird, müssen Sie die HOME-Umgebungsvariable einrichten, damit der Git SSH-Client den Schlüssel finden kann.

Zum Beispiel auf a Windows Vista Installation würde dies durch Ausstellung erfolgen setx HOME c:\Users\admin\ in der Befehlszeile.

Es hat meinen Tag gemacht und das Problem mit Git behoben, vorausgesetzt, dass Ihr privater Schlüssel nicht passwortgeschützt ist. Wenn Sie ssh-agent benutzen wollen, dann können Sie wahrscheinlich ssh-agent cmd.exe (obwohl ich das noch nie gemacht habe) und ssh-add wie gewohnt ausführen.

Beachten Sie, dass alle Git / SSH-Tools von einer cmd.exe ausgeführt werden sollen, um dies nicht zu tun blinken ein Fenster.

Wenn dies nicht korrekt funktioniert, kann die Verwendung von Plink wahrscheinlich durch Feinabstimmung erreicht werden GIT_SSH. Siehe alle SVN + ssh Tutorials; Dies ist im Grunde die gleiche Installation, die Sie einrichten müssen.


101
2017-11-05 18:24



Das ist, was ich suchte, seit ich versuche, die Windows-Eingabeaufforderung zu verwenden, nicht git bash. - John Ruiz
Schöne, einfache Lösung, aber es wäre schwer gewesen ohne das herauszufinden! - thaddeusmt
Wichtig ist auch, keine Leerzeichen zwischen HOME = und c: \ ... zu haben. Oct's Lösung hat den Trick für mich gemacht. :-) - Lutz
Das setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` stattdessen. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


Sie können die Schlüsselposition für TortoiseGit wie folgt angeben:

  • Öffnen Sie ein Explorer-Fenster.
  • Öffne das Kontextmenu und navigiere SchildkrötenGit → die Einstellungen
  • Navigieren Sie im nun geöffneten Fenster zu Git → Fernbedienung
  • Stellen Sie den Pfad zu Ihrer PuTTY-Taste im entsprechenden Eingabefeld ein.

Ein Screenshot ist unten:

Enter image description here


48
2017-11-05 14:07



Wenn Sie Ihren privaten Schlüssel in das '.ppk' Format von einem anderen Format konvertieren müssen, können Sie folgen DIESE - Tariq M Nasim
Es hat für mich funktioniert. - Maxim Eliseev
Git> Remote wird nur angezeigt, wenn Sie das Repository erfolgreich geklont haben. - Steve Pitchers
Eine viel einfachere Lösung besteht darin, alles ordnungsgemäß in git zu installieren (mit openSSH) und dann TortoiseGit mitzuteilen, die von git verwendete ssh.exe zu verwenden. Sehen stackoverflow.com/a/33328628/318317 Auf diese Weise müssen Sie das nur einmal beheben. - Daniel Rose


Keine der vorherigen Antworten funktionierte für mich. Hier war, was am Ende für mich funktionierte. Es ist eigentlich ziemlich einfach, wenn Sie wissen, was zu tippen ist. Es benötigt kein PuTTY.

  • Öffnen Sie eine Git Bash-Eingabeaufforderung
  • Geben Sie 'ssh-keygen' ein
    • Übernehmen Sie den Standardspeicherort
    • Wählen Sie eine leere Passphrase (Drücken Sie einfach 'Enter' zu allen Fragen ')
  • Kopieren Sie nun den öffentlichen Schlüssel auf Ihren Server, zum Beispiel: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Das ist das bisschen auf deinem eigenen Computer getan. Jetzt ssh in den Zielserver, dann tun

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Das ist es! Sie sind fertig! Führen Sie von Git Bash Folgendes aus, um zu testen:

ssh someuser@someserver.com ls

Wenn es die Dateien in Ihrem Home-Verzeichnis auf dem Git-Server auflistet, und Sie sind fertig!

Für GitHub haben Sie keinen Shell-Zugriff auf ihren Server, aber Sie können den Schlüssel über die Website hochladen. Führen Sie für das Bit "Jetzt auf Ihren Server kopieren" folgende Schritte aus:

  • Gib in Git Bash 'cat ~ / .ssh / id_rsa.pub' ein, wähle das Ergebnis und kopiere es in die Zwischenablage.
  • Gehen Sie auf der GitHub-Website zu "Kontoeinstellungen", "SSH- und GPG-Schlüssel", klicken Sie auf "Neuer SSH-Schlüssel" und fügen Sie den Schlüssel ein.

45
2018-04-25 01:32



Erstellen Sie keine Schlüssel ohne Passphrasen. Es ist so, als würde man sein Passwort in eine Textdatei schreiben, außer dass jeder den Standardspeicherort für private Schlüssel kennt. - GregB
Du antwortest die falsche Frage. Das Q zeigt, wie auf einen vorhandenen privaten Schlüssel verwiesen wird. - Orangutech
@ GregB, ich sehe es so: jeder Server, für den ich einen Passwortlosen Schlüssel erstelle, ist so sicher wie mein Laptop, es ist eine Erweiterung des Sicherheitsumfangs meines Laptops. Eigentlich nicht einmal, da mein Heimatverzeichnis verschlüsselt ist ;-) Es ist also so sicher wie die verschlüsselte Home-Partition auf meinem Laptop, die meiner Meinung nach "gut genug" ist, um den Zugriff auf GitHub zu sichern. (was natürlich von Ihrer Meinung abweichen kann!) - Hugh Perkins
@GregB Nicht in Paranoia fallen! :] Sicher, dass die Verwendung passwortgeschützter Schlüssel viel sicherer ist, als die Verwendung von kennwortlosen, aber die Behauptung, dass ein passwortloser Schlüssel genauso leicht zu knacken ist wie das Speichern von Passwörtern in einer Textdatei, ist offensichtlich falsch. Ich habe viele Anleitungen gesehen, die Benutzer dazu ermutigen, passwortgeschützte Schlüssel zu verwenden, aber ich habe nie behauptet, dass die Verwendung von ihnen ohne Passwörter überhaupt nicht sicher ist. Plus: Einige Systeme unterstützen keine Lösungen für das Merken des Schlüsselpassworts, die von den Benutzern eingegeben werden, und fragt es jedes Mal, wenn Schlüssel benutzt wird. Das macht die Verwendung von SSH-Schlüsseln in dieser Situation sinnlos. - trejder
Wegen der Konversation, die von der ursprünglichen Frage abweicht, sind SSH-Schlüssel zwar kryptografisch sicherer als Passwörter, aber diese Sicherheit wird durch die Nicht-Verschlüsselung Ihrer SSH-Schlüssel gefährdet. Meine persönliche Herangehensweise besteht darin, meine Schlüssel zu Beginn des Tages mit einem SSH-Agenten zu entsperren, der dann die entschlüsselten Schlüssel im Speicher hält, so dass ich das Passwort den ganzen Tag nicht erneut eingeben muss. Wie @Hugh Perkins Kommentare, und ich paraphrasieren, Sie alle kennen Ihre Sicherheitsanforderungen besser als ich / wir :). - GregB


Wenn Sie msysgit mit den OpenSSH-Tools verwenden, müssen Sie entweder erstellen ~/.ssh/id_rsaoder erstellen Sie eine Git-Konfiguration in ~/.ssh/config was auf deinen Schlüssel zeigt.

Hier ist ein Beispiel für eine Git-Konfiguration für Bitbucket, die den richtigen Benutzernamen und einen anderen Schlüssel als den Standardschlüssel verwendet (falls Sie einen Schlüssel für SSH-Verbindungen und einen anderen für Git-Konten verwalten).

~ / .ssh / Konfig:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Sobald Sie in Git Bash sind, können Sie zwei Befehle ausführen, um Ihren Schlüssel dem ssh-agent Ihrer aktuellen Sitzung hinzuzufügen, um zu vermeiden, dass Sie das Kennwort des Schlüssels wiederholt eingeben müssen.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



Ich habe dies aber für github.com getan: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Wenn Sie ein Leerzeichen in Ihrem Pfad haben, müssen Sie Anführungszeichen verwenden: IdentityFile "/ C / My Keys / key" - r03
Ich bevorzuge diesen Weg, weil ich dadurch schnell existierende Schlüssel von anderen PCs verbinden konnte - Kirill Gusyatin
Meine .gitconfig hat Abschnitte. Unter welchen Bereichen sollte ich diese Hosts platzieren? - Steve Yakovenko


Ich habe nur% HOME% =% HOMEPATH%

Dies hat den Vorteil, für alle Benutzer zu arbeiten, die im System angemeldet sind (sie erhalten jeweils separate .ssh-Ordner).

In Vista:

  1. Klicken Sie mit der rechten Maustaste auf Computer
  2. Wählen Sie Eigenschaften
  3. Klicken Sie auf Erweiterte Systemeinstellungen
  4. Klicken Sie auf Umgebungsvariablen
  5. Im unteren Bereich (Systemvariablen) klicken Sie auf Neu
  6. Für den Namenstyp: HOME
  7. Für den variablen Pfadtyp:% HOMEPATH%
  8. OK klicken

14
2017-10-12 01:26



In meinem Fall habe ich HOME =% USERPROFILE% hinzugefügt - igor
Beachten Sie, dass %HOMEPATH% enthält nicht den Laufwerksbuchstaben, also wenn Ihre Quelle nicht eingeschaltet ist C: Sie müssen vorgeben C: zu %HOME%. - Graeme Perrow


Ihr privater Schlüssel muss dem SSH-Agenten auf Ihrer Workstation hinzugefügt werden. Wie Sie dies erreichen, hängt davon ab, welchen Git-Client Sie verwenden, aber puTTY und der dazugehörige Agent (Festzug) könnten den Trick für Sie darstellen. Hier ist der Link zu den offiziellen Binärdateien und der Quelle:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



Ich habe oben erwähnt, dass ich Git für Windows benutze und ssh.exe (verpackt mit Git) anstelle von Kitt verwende. Es muss ein Standardverfahren zum Hinzufügen eines privaten Schlüssels geben, ich kann einfach nicht herausfinden, wie. Während das Umschalten der Software es mir tatsächlich erlaubt, mich einzuloggen, muss es einen Weg geben, dies mit dem Standard-Git-Setup zu tun, nein? - binaryorganic
Tut mir leid, ich arbeite nicht mit Windows, nur Linux. Aber der Schlüssel muss in Ihrem SSH-Agenten sein. Gibt es eine agent.exe oder etwas in dieser Richtung? - Declan Shanaghy
Ja, Setup war Kuchen auf der Linux-Seite. Aber ich muss es leider auch unter Windows laufen lassen. Es gibt mehrere ssh-bezogene ausführbare Dateien im git / bin-Ordner auf der Windows-Box (ssh, ssh-add, ssh-agent, ssh-keygen und ssh-keyscan), aber ich weiß nicht, wie ich sie erstellen soll mach alles. Sie blinken nur ein cmd Fenster und schließen sofort. Ich bin ratlos. - binaryorganic
Pageant löst tatsächlich das Problem für mich - ich habe eine Verknüpfung in meinem Startmenü Startup-Ordner (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) zeigt auf "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", so dass es meine SSH-Schlüssel beim Start lädt und das macht GIT "nur Arbeit": o) - Owen Blacker
@OwenBlacker OMFG! Sie auf jeden Fall sollte schreibe diesen Kommentar als Full-Size Antworten! Das ist die einzige Lösung hier, das hat mir wirklich geholfen und mein Problem gelöst! Schade, dass ich dir nur +1 geben kann! :] - trejder


OK, ich schaute auf den Vorschlag von ..

Aber wenn ich meine privaten SSH-Schlüssel in den öffentlichen Ordner legte, hielt ich das nicht für eine gute Idee, also suchte ich nach dem bekannten Host.

Wenn Sie also Ihren SSH-Schlüssel richtig schützen wollen, müssen Sie Ihren Schlüssel in das folgende Verzeichnis setzen:

Für Windows 7, 8 und 8.1 32-Bit:

C: \ Benutzer \ AppData \ Local \ VirtualStore \ Programme \ Git \

Für Windows 7, 8 und 8.1 64-Bit:

C: \ Benutzer \ AppData \ Local \ VirtualStore \ Programme (x 86) \ Git \


4
2017-09-08 10:04



Hallo Bas. Ich denke, du solltest deine Frage löschen und fragen oder geben Superbenutzer weil dies die falsche Seite für diese Art von Frage / Antwort ist :-) - Ian Macintosh
Es ist nicht meine einzige Belästigung - Bas van den Dikkenberg
Dies war die einfachste Lösung auf meiner Win7-Maschine. Wie du habe ich gesucht known_hosts. Sicher genug, es war in C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Indem ich meine Schlüsseldatei (id_rsa) in dieses Verzeichnis legte, konnte ssh es ohne Beanstandung finden. Ich habe ein wenig gelesen - so behandelt Windows (ältere) Software, die versucht, in verbotene Bereiche zu schreiben (wie "C: \ Programme \"), so dass gits ssh überhaupt nicht weiß, dass sie in das VirtualStore-Verzeichnis Windows schreibt geht damit transparent um. Zumindest gehören diese Dateien einem Benutzer! - DaveGauer


In meinem Fall habe ich Git für Windows im Docker-Container verwendet windowsservercore.

Mein Git wurde von installiert Schoko zu C:\Program Files\Git.

Ich musste die Datei aktualisieren C:\Program Files\Git\etc\ssh\ssh_config mit diesem:

Host example.com
   Identityfile ~/.ssh/id_rsa

Dann konnte ich Schlüssel aus benutzen C:\Users\<user>\.ssh\id_rsa

Wenn Sie Git für Windows zusammen mit OpenSSH für Windows verwenden. Git benutzt immer noch sein eigenes ssh.

Plus wenn Sie planen zu verwenden ssh-keyscan host.com > known_hosts von OpenSSH, seien Sie vorsichtig, weil die Ausgabe von stdout von keyscan (unter Windows) ändert die Codierung in UCS-2, aber OpenSSH kann nur UTF-8 lesen! Stellen Sie also sicher, dass Sie die known_hosts Dateicodierung.


4
2017-11-02 15:27



Dies ist hilfreich, aber für jeden, der einen id_dsa-Schlüssel verwendet, müssen Sie auch "PubkeyAcceptedKeyTypes ssh-dss" unter Ihrem Host hinzufügen. - Michael Russo