Mein Git-Setup läuft unter Linux einwandfrei, aber wenn ich versuche, Dinge unter Windows einzurichten (mit Git für Windows und TortoiseGit ), weiß ich nicht, wo ich meinen privaten SSH-Schlüssel ablegen soll (oder besser noch, wie ich sagen soll, ssh
wo er ist) gelegen). Ich verwende die Standardoption ssh.exe während der Installation von Git für Windows. Das Setup funktioniert einwandfrei, wenn ich die Kennwortauthentifizierung (anstelle von RSA) auf dem Server zulasse.
487
Antworten:
Für Git Bash
Wenn Sie msysgit ausführen (ich nehme an, dass Sie dies tun) und Git Bash ausführen möchten (ich empfehle es über TortoiseGit, aber ich lehne mich jetzt mehr an die CLI als an die GUI), müssen Sie herausfinden, welches Ihr Ausgangsverzeichnis für Git ist Bash indem
pwd
du es startest und dann tippst (Unter Windows 7 wird es ungefähr so sein wieC:\Users\phsr
ich denke). Während Sie in Git Bash sind, sollten Siemkdir .ssh
.Nachdem Sie das
.ssh
Basisverzeichnis und einen Ordner darunter haben, möchten Sie PuTTYgen öffnen und den zuvor erstellten Schlüssel (PPK-Datei) öffnen. Sobald Ihr Schlüssel geöffnet ist, möchten Sie ihn auswählenConversions -> Export OpenSSH key
und in speichernHOME\.ssh\id_rsa
. Nachdem Sie den Schlüssel an diesem Ort haben, erkennt Git Bash den Schlüssel und verwendet ihn.Hinweis: Kommentare weisen darauf hin, dass dies nicht in allen Fällen funktioniert. Möglicherweise müssen Sie den OpenSSH-Schlüssel nach
Program Files\Git\.ssh\id_rsa
(oderProgram Files (x86)\Git\.ssh\id_rsa
) kopieren .Für TortoiseGit
Wenn Sie TortoiseGit verwenden, müssen Sie den SSH-Schlüssel gemäß den Anweisungen von pacey festlegen . Sie müssen dies für jedes Repository tun, mit dem Sie TortoiseGit verwenden.
quelle
~/.ssh/id_rsa
Datei kopierenProgram Files\Git\.ssh\id_rsa
- was etwas verwirrend war, aber jetzt können IntelliJ und Windows cmd auf Git-Repositorys pushen, die Schlüsselauthentifizierung verwenden.id_rsa
undid_rsa.pub
inc:\program files (x86)\Git\.ssh
. Das.ssh
dir war schon da. Danke, JP.id_rsa
ohne die Erweiterung sein. Das ist der Dateiname, es ist kein VerzeichnisWenn Sie den mit Git für Windows gelieferten integrierten SSH-Client verwenden, müssen Sie die Umgebungsvariable HOME so einrichten, dass der Git-SSH-Client den Schlüssel findet.
Bei einer Windows Vista- Installation würde dies beispielsweise durch Ausgabe
setx HOME c:\Users\admin\
in der Befehlszeile erfolgen.Es war mein Tag und behebt das Problem mit Git, vorausgesetzt, Ihr privater Schlüssel ist nicht passwortgeschützt. Wenn Sie ssh-agent verwenden möchten, können Sie wahrscheinlich ssh-agent cmd.exe (obwohl ich das noch nie getan habe) und ssh-add wie gewohnt ausführen.
Beachten Sie, dass alle Git / SSH-Tools von einer cmd.exe ausgeführt werden sollen, um ein Fenster nicht zu blinken .
Wenn dies nicht korrekt funktioniert, kann die Verwendung von plink wahrscheinlich durch Optimieren von GIT_SSH erreicht werden . Lesen Sie alle SVN + ssh-Tutorials. Dies ist im Grunde das gleiche Installationsprogramm, das Sie einrichten müssen.
quelle
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use
cmd` statt.GIT_SSH=c:\pathto\plink.exe
Sie können den Schlüsselspeicherort für TortoiseGit folgendermaßen angeben:
Ein Screenshot ist unten:
quelle
Keine der vorherigen Antworten hat für mich funktioniert. Hier war, was am Ende für mich gearbeitet hat. Es ist eigentlich ziemlich einfach, wenn man weiß, was man tippt. PuTTY wird nicht benötigt.
Das ist der Teil, den Sie auf Ihrem eigenen Computer gemacht haben. Nun
ssh
in den Zielserver, dann tunDas ist es! Sie sind fertig! Führen Sie in Git Bash die folgenden Schritte aus, um Folgendes zu testen:
Wenn es die Dateien in Ihrem Home-Verzeichnis auf dem Git-Server auflistet, sind Sie fertig!
Für GitHub haben Sie keinen Shell-Zugriff auf den Server, aber Sie können den Schlüssel über die Website hochladen. Gehen Sie also für das Bit "Jetzt auf Ihren Server kopieren" wie folgt vor:
quelle
Wenn Sie msysgit mit den OpenSSH-Tools verwenden, müssen Sie entweder
~/.ssh/id_rsa
eine Git-Konfiguration erstellen oder eine solche erstellen , in~/.ssh/config
der auf Ihren Schlüssel verwiesen wird .Hier ist ein Beispiel für eine Git-Konfiguration für Bitbucket, die den richtigen Benutzernamen und einen anderen als den Standardschlüssel verwendet (falls Sie einen Schlüssel für SSH-Verbindungen und einen anderen für Git-Konten verwalten).
~ / .ssh / config :
In Git Bash können Sie zwei Befehle ausführen, um Ihren Schlüssel zum ssh-agent Ihrer aktuellen Sitzung hinzuzufügen, damit Sie das Kennwort des Schlüssels nicht wiederholt eingeben müssen.
quelle
Ich habe gerade% HOME% =% HOMEPATH% gesetzt
Dies hat den Vorteil, dass alle am System angemeldeten Benutzer arbeiten (sie erhalten jeweils separate .ssh-Ordner).
In Vista:
quelle
%HOMEPATH%
der Laufwerksbuchstabe nicht enthalten ist. Wenn Ihre Quelle nichtC:
aktiviert istC:
, müssen Sie dem voranstellen%HOME%
.set %HOME%=%HOMEPATH%
arbeitete für mich! Danke!!Ihr privater Schlüssel muss dem SSH-Agenten auf Ihrer Workstation hinzugefügt werden. Wie Sie dies erreichen, hängt möglicherweise davon ab, welchen Git-Client Sie verwenden. PuTTY und der zugehörige Agent (Festzug) können jedoch den Trick für Sie tun. Hier ist der Link zu den offiziellen Binärdateien und der Quelle:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
quelle
C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
), die darauf verweist"C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk"
, dass meine SSH-Schlüssel beim Start geladen werden, und dies lässt GIT "einfach funktionieren": o)In meinem Fall habe ich Git für Windows im Docker-Container verwendet
windowsservercore
.Mein Git wurde von Chocolatey zu installiert
C:\Program Files\Git
.Ich musste die Datei folgendermaßen aktualisieren
C:\Program Files\Git\etc\ssh\ssh_config
:Dann durfte ich Schlüssel von verwenden
C:\Users\<user>\.ssh\id_rsa
Wenn Sie Git für Windows zusammen mit OpenSSH für Windows verwenden. Git benutzt immer noch einen eigenen
ssh
.Plus , wenn Sie mit der Planung
ssh-keyscan host.com > known_hosts
von OpenSSH, vorsichtig sein , da Rohrleitungen Ausgabe ausstdout
demkeyscan
(unter Windows) ändert Kodierung UCS-2, aber OpenSSH lesen kann nur UTF-8! Stellen Sie also sicher, dass Sie dieknown_hosts
Dateicodierung ändern .quelle
OK, ich habe mir den Vorschlag von angeschaut
.
.Aber ich hielt es nicht für eine gute Idee, meine privaten SSH-Schlüssel in einem öffentlichen Ordner abzulegen, und fing an, nach dem bekannten Host zu suchen.
Wenn Sie also Ihren SSH-Schlüssel korrekt schützen möchten, müssen Sie ihn in das folgende Verzeichnis stellen:
Für Windows 7, 8 und 8.1 32-Bit:
Für Windows 7, 8 und 8.1 64-Bit:
quelle
known_hosts
. Sicher genug, es war inC:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh
. Indem ich meine Schlüsseldatei (id_rsa) in dieses Verzeichnis legte, konnte ssh sie ohne Beanstandung finden. Ich habe ein wenig gelesen - auf diese Weise behandelt Windows (ältere) Software, die versucht, in verbotene Bereiche zu schreiben (z. B. "C: \ Programme \"), sodass Gits ssh nicht weiß, dass in das VirtualStore-Verzeichnis Windows geschrieben wird geht das transparent an. Zumindest diese Dateien gehören einem Benutzer!Am effizientesten ist es, Pageant zu verwenden, da Sie die Passphrase nur einmal zu Beginn der Sitzung schreiben können, anstatt bei jedem Push. Alle Antworten hier waren zu kurz, daher werde ich hier eine ausführliche Anleitung veröffentlichen:
pageant.exe
,puttygen.exe
,putty.exe
undplink.exe
von PuTTY Webseite. Legen Sie sie in dasC:\puttyTools
Verzeichnis.puttygen.exe
.%USERPROFILE%\_ssh
(auf meinem Computer wird dies zugeordnetC:\Users\andres\.ssh\
). Es spielt keine Rolle, wie Sie den Schlüssel nennen, aber zu Demonstrationszwecken werde ich ihn anrufengithub.ppk
. Diese Datei sollte die Erweiterung .ppk haben.Public key for pasting into OpenSSH authorized_keys file
und fügen Sie ihn in einen neuen SSH-Schlüssel in den GitHub-Einstellungen ein. Geben Sie einen Titel ein, der beschreibt, auf welchem Computer sich der Schlüssel befindet (z. B. "Arbeitslaptop").pageant.exe
, ein neues Systray-Symbol wird angezeigt.Environ
über WindowsMenu nach Anwendungen suchen, die gefunden werdenEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
undSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
Git-Konsole aus und überprüfen Sie, ob die Umgebungsvariablen vorhanden sind, indem Sie den Befehl schreibenenv | grep -i ssh
.(Ursprünglich aus diesen beiden Handbüchern extrahiert, die ich in einem zusammengefasst habe: So richten Sie Git für Windows ein und konfigurieren MinGW-W64 + MSYS für die Verwendung von PuTTY Plink / Pageant .)
quelle
Wenn Sie GitHub für Windows und Git GUI für Windows mischen, können Probleme auftreten, bei denen Git GUI Sie immer wieder zur Eingabe eines Benutzernamens und eines Kennworts auffordert. Die Lösung hierfür besteht darin, die Remote-URL
https:
(die von GitHub für Windows erstellt wird) in das Git-Protokoll zu ändern ..git
Suchen Sie im Verzeichnis in der Konfigurationsdatei nach:Ändern Sie es in:
quelle
git@{SERVER URL}
?Der Standardspeicherort für die Dateien ist in
%USERPROFILE%\.ssh
.%USERPROFILE%
ist das Äquivalent von $ HOME in Unix (normalerweise entspricht es so etwasc:\users\youruserid
).Wenn Sie die mit Git gelieferten SSH-Tools verwenden, die die Standardbefehlszeilen-Tools im Unix-Stil darstellen, können Sie hier so etwas wie mein Skript verwenden , um mit ssh-agent über alle Shells hinweg zu arbeiten.
quelle
%USERPROFILE% is the equivalent of $HOME
ist das nicht das Äquivalent von$HOME
. Viele schlecht funktionierende Linux-Apps, die auf Windows portiert wurden, behandeln beide gleich, sollten aber nicht gleich behandelt werden.%USERPROFILE%
unter Windows genauso verwendet werden wie$HOME
unter Linux, verstoßen gegen gut dokumentierte Best Practices / Empfehlungen für die Windows-Entwicklung (von MS vor langer Zeit veröffentlicht und im Laufe der Zeit aktualisiert). Es gibt viele Tools, die dies tun, aber das Argument, dem sie folgen, ähnelt dem Argument "X pinkelt im Pool, also sollten wir es auch."USERPROFILE
ist , wo der Benutzer Dokumente speichert sie erstellen / speichern (zB Speichern - Dialog).APPDATA
ist für benutzerspezifische Konfigurationsdaten.LOCALAPPDATA
ist für benutzerspezifische Caches und große Dateien gedacht.PROGRAMDATA
ist für die maschinenweite Konfiguration und den Cache.Ich hatte ähnliche Probleme und keine der Antworten hier löste das Problem. Es stellte sich heraus, dass mein Schlüsselpaar ursprünglich mit einer leeren Passphrase generiert wurde. (Ich weiß, dumm.)
Nachdem ich ein neues Schlüsselpaar erstellt und den öffentlichen Schlüssel auf GitHub hochgeladen hatte, funktionierten die Dinge wieder.
quelle
Die folgende Antwort gilt auch für diese Frage, wenn Sie ssh über das Windows-Dienstkonto ausführen: Jenkins (Windows-Dienst) mit Git über SSH
quelle
Sie können sowohl den Pfad zum Schlüssel als auch den Namen der Schlüsseldatei wie folgt angeben (unter Ubuntu). Zum Beispiel:
quelle
GIT_SSH_COMMAND
auf meinem Windows-Rechner einstellen soll .Pageant (ein SSH-Agent, der mit dem PuTTY-Bundle geliefert wird ) löst das Problem für mich.
Ich habe eine Verknüpfung im Startup-Ordner (
C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
) meines Startmenüs, die darauf verweist"C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk"
, dass meine SSH-Schlüssel beim Start geladen werden und Git dadurch "einfach funktioniert": o)quelle
Viele Antworten sagen das, aber für mich nicht schnell genug!
in Windows mit msys (Standard Windows Konsole)
C:\Users\{you}\.ssh\id_rsa
Grundsätzlich stört es nicht, installierte Schlüssel zu scannen (zumindest nicht auf meinem neuen Laptop) und muss daher speziell überprüft werden
id_rsa
Ich bin auf dieses Problem gestoßen, als ich einige private Arbeitsrepos in Ruby MSYS CLI für Windows 10 64-Bit klonen wollte
quelle
Wenn Sie mit Windows 7/8 arbeiten, sollten Sie in C: \ Users \ Your_User_Name.ssh nachsehen. Kopieren Sie einfach Ihre id_rsa-Datei und fügen Sie sie hier ein.
quelle
Ein Fehler, den ich bei der Verwendung von SSH unter Windows gemacht habe, war, dass bei dem Versuch, die Schlüssel über den Git Bash-Client zu verwenden, alle Dateien in ~ / .ssh die falschen Berechtigungen hatten, aber es wurde nicht versucht, mir mitzuteilen, dass es sich um eine handelt Problem.
Stellen Sie als Test sicher, dass Sie alles in Ihrem ~ / .ssh-Verzeichnis auf chmod 600 eingestellt haben.
quelle
Wenn Sie über die erforderlichen Berechtigungen auf dem Windows-Computer verfügen und Ihre Richtlinien dies zulassen, empfehle ich die Installation von Cygwin ( https://cygwin.com/ ), insbesondere, wenn Sie bereits Erfahrung mit Linux haben. Cygwin macht es möglich, Ihre SSH-Schlüssel wie auf jedem anderen Linux / Unix-Rechner zu behandeln. Und es bietet Zugriff auf fast alle CLI-Tools von Linux.
quelle
In TortoiseGit können Sie den Schlüssel angeben, der beim Klonen eines Repositorys verwendet werden soll. Aktivieren Sie einfach "Load Putty Key" und navigieren Sie zu der
.ppk
Datei, wie im Screenshot gezeigt:quelle
Settings... -> Network -> SSH client
aufC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Ich habe das obige Problem durch Erstellen behoben
ablegen und ablegen:
quelle
Wenn Sie Ihren Kommentar zu Declans Antwort lesen, versuchen Sie zunächst, eine Eingabeaufforderung zu öffnen (Start → Ausführen → cmd ), und navigieren Sie dann zu diesem Git / Bin-Ordner, und führen Sie ihn aus
ssh-keygen
. Theoretisch wird dadurch ein RSA-Schlüssel generiert und in das entsprechende Verzeichnis gestellt. Dann müssen Sie es nur noch finden und Ihren öffentlichen Schlüssel mit der Welt teilen.Der Grund, warum das Fenster "blinkt", ist, dass Windows das Programm ausführt und wenn es ausgeführt wird, die Eingabeaufforderung schließt und denkt, dass Sie damit fertig sind, wenn Sie die Ausgabe wirklich benötigen.
quelle
Unter Verwendung von Git Gui v0.17 unter Windows habe ich den folgenden Menübefehl angeklickt: Hilfe → SSH-Schlüssel anzeigen .
Ein Dialogfeld mit dem Titel Ihr OpenSSH Public Key wurde angezeigt . Ich habe einen Schlüssel generiert und in die Zwischenablage kopiert. Dann folgte ich ab Schritt 3 den Anweisungen von setup-ssh auf githelp . Danach hat Git Gui lautlos mit GitHub kommuniziert - es müssen keine Anmeldeinformationen eingegeben werden.
quelle
Auf meinem Windows 7-System sucht Git Gui nach dem RSA-Schlüssel im
userprofile/.ssh
Ordner oder genauerc:/users/yourusername/.ssh/
.Der schwierige Teil meines Setups war, den gemeinsam genutzten Host bei Hostmonster zu veranlassen, den Schlüssel zu akzeptieren. Die einzige Möglichkeit, um es zum Laufen zu bringen, bestand darin, mit Git Gui die Schlüsselpaare (ohne Kennwort) zu erstellen und dann den öffentlichen Schlüssel über das Bedienfeld ssh zu kopieren und einzufügen und die Schlüssel zu verwalten.
Um am Anfang zu starten, müssen Sie die Schlüssel in Git Gui erstellen , indem Sie auf Menü Hilfe , zeigen SSH - Schlüssel , dann Schlüssel generieren . Jetzt haben Sie zwei neue Schlüssel im
.ssh
Verzeichnis. Öffnen Sie die.pub
Datei und kopieren Sie den Inhalt.Melden Sie sich auf dem freigegebenen Host in Ihrem Control Panel an und rufen Sie SSH , SSH-Schlüssel verwalten und Schlüssel importieren auf . Fügen Sie es in die öffentliche Box ein und vergewissern Sie sich, dass Sie den richtigen Namen ohne die Erweiterung angegeben haben
id_rsa
. Jetzt müssen Sie den Schlüssel über den Link zum Verwalten der Autorisierung autorisieren, damit er in dieauthorized_keys
Datei eingebunden wird.Jetzt sollten Ihr Git Gui und Ihr Git Bash in der Lage sein, mit SSH zu pushen, ohne dass Sie das Passwort eingeben müssen. Seltsamerweise war ich in der Lage, SSH über Git Bash und Git Gui zu verwenden. Auf meinen eigenen Servern mit Linux war das Shared Hosting genau das Richtige für mich. Ich hoffe, dass dies jemandem hilft, da ich Stunden des Versuchs und Irrtums gebraucht habe, um dies zu finden - und es ist so einfach!
quelle
Wenn Sie die Git-Befehlszeile für Windows verwenden, können Sie wie folgt vorgehen:
Öffnen
cmd.exe
und ausführensetx HOME c:\PATH_TO_PRIVATE_KEY
.Erstellen Sie einen neuen Ordner,,
.ssh
(falls nicht vorhanden)c:\PATH_TO_PRIVATE_KEY
und kopieren Sie Ihreid_rsa
Datei (Ihren privaten Schlüssel) hinein.Getan. Jetzt können Sie die Git-Befehlszeile normal verwenden.
quelle
Meiner Erfahrung nach ist OpenSSL / Bash Git in msysgit (nicht PuTTYs Plink), dass die Suchreihenfolge für Ihren
.ssh/
Ordner wie folgt lautet.%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%USERPROFILE%/.ssh/
Deshalb schlagen so viele Leute vor, eine Einstellung vorzunehmen,
HOME
wenn eine der anderen nicht Ihren Erwartungen entspricht. Noch wichtiger ist, können Sie selbst überprüfen; Debuggen der Verwendungssh -v
auf einem Server, der die Authentifizierung mit öffentlichem Schlüssel verwendet, wie folgt:Wir fanden die
ssh
Suche auf einem dunklen Laufwerk und keine der vorherigen Antworten schien zu erklären, was wir sahen.Manchmal
%HOMEDRIVE%%HOMEPATH%
ist ein zugeordnetes Netzlaufwerk (zBH:/
) , die unnötigen Ausfälle verursacht , wenn es Netzwerk / File - Server Probleme, selbst wenn%USERPROFILE%/.ssh
istC:/Users/Username/.ssh
und hat die lokal Tasten. Einstellung%HOME%
zur%USERPROFILE%
stoppt es an der Remote Home - Laufwerk suchen.quelle
Sie können auch PuTTY Agent (Pageant) laden und den privaten Schlüssel hinzufügen, den Sie mit PuTTY für den Server generiert haben.
Git erkennt dies und nutzt es für Push / Pull.
quelle
Ich habe TortoiseGit und Git Bash unter Windows verwendet, je nach Bedarf. Ich habe alles zu TortoiseGit hinzugefügt, und es hat gut funktioniert, aber Git Bash hat es nicht abgerufen, obwohl sich die Schlüssel im richtigen Verzeichnis befanden. Es stellte sich heraus, dass ich das von Git Bash machen musste:
Sie können den Pfad natürlich auch dahin ändern, wo sich Ihr Schlüssel befindet, und sich daran erinnern, ihn
\\
als Trennzeichen zu verwenden.quelle
Wenn Sie Git für Windows verwenden, müssen Sie nach dem Generieren der SSH-Schlüssel Ihren SSH-Schlüssel zu ssh-agent hinzufügen.
Siehe Neuen SSH-Schlüssel generieren und zum ssh-agent hinzufügen .
quelle