wake-up-neo.com

TortoiseGit mit openssh-Schlüssel authentifiziert sich nicht mit ssh-agent

Ich richte eine Git-Umgebung unter Windows ein XP (msysGit 1.7.11, TortoiseGit 1.7.14)) und versuche, folgende Punkte zu erreichen:

  • sSH-Verbindung an einem anderen als dem Standard-Port 22
  • die SSH-Authentifizierung wird vom SSH-Agenten durchgeführt

Also erstelle ich eine ~/.ssh/config Datei:

Host gitbox
   User gitolite
   Hostname XX.XX.XX.XX
   Port 154
   PreferredAuthentications publickey
   IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"

Bei Verwendung der git bash CLI funktioniert alles wie vorgesehen.

Ich kämpfe mit TortoiseGit.
Ich habe TortoiseGit zum ersten Mal mit Plink installiert und Pageant verwendet, um den privaten ssh-Schlüssel zu laden. Die automatische Authentifizierung (Pageant) funktionierte, aber das Setup schlug fehl, da TortoiseGit die als [email protected]/repo.git formatierte git repos-URL nicht erkennt.

Ich entschied mich dann, TortoiseGit mit dem openssh-Client zu installieren, damit die Konfigurationsdatei vom ssh-Client gelesen werden kann und das git-CLI-Setup nachgebildet werden kann.
Ich habe die mit msys git gelieferte ssh.exe als ssh-Client in den TortoiseGit-Einstellungen ausgewählt.
Wenn Sie ein git pull, die entfernte URL ist jetzt aufgelöst, aber das Passwort wird abgefragt, während ich erwarte, dass die automatische Authentifizierung von ssh-agent erfolgt.

https://dl.dropbox.com/u/1026715/tortoisegit.png

Ist es möglich, TortoiseGit mit ssh-agent zum Laufen zu bringen?
Oder TortoiseGit (Plink) auf . Ssh/config aufmerksam machen?

Edit # 1

Nach @VonC-Anweisungen habe ich meine $ HOME-Variable konfiguriert.
Wenn ich in TortoiseGit auf Umgebungsvariablen anzeigen klicke, habe ich jetzt:

 HOME=C:\Documents and Settings\kraymer  
 HOMEDRIVE=C: 
 HOMEPATH=\Documents and Settings\kraymer 

Aber git pull Ich muss noch eine Passphrase eingeben.

34
kraymer

Keine Anpassungen erforderlich.

Lassen Sie TortoiseGit einfach auf denselben ssh-Client verweisen, den git selbst verwendet, siehe Screenshot:

enter image description here

Das sollte sein C:\Program Files\Git\usr\bin\ssh.exe in der neuesten Version von Git, wie von Aleksey Kontsevich in den Kommentaren erwähnt.

82
Haitham Sweilem

Ich habe TortoiseGit zum ersten Mal mit Plink installiert und Pageant verwendet, um den privaten ssh-Schlüssel zu laden. Die automatische Authentifizierung (Pageant) funktionierte, aber das Setup schlug fehl, da TortoiseGit die als [email protected]/repo.git formatierte git repos-URL nicht erkennt.

Ich habe endlich eine Problemumgehung gefunden, die darin besteht, eine PuTTY-Sitzung mit demselben Namen wie der ssh-Alias ​​(dh gitbox in der Frage) zu erstellen.
Auf diese Weise kann ich als git clone gitbox/monrepo In der CLI klonen und die Origin -Syntax wird von TortoiseGit korrekt gehandhabt.

4
kraymer

1) Cygwin

Verwenden Sie den im folgenden Artikel beschriebenen Ansatz: https://help.github.com/articles/working-with-ssh-key-passphrases

Das Passwort wird nur einmal beim Start der Cygwin-Sitzung abgefragt. !!! Vergessen Sie vor dem Beenden der Cygwin-Sitzung nicht, den Prozess ssh-agent zu beenden (verwenden Sie ps zum Suchen der Prozess-PID und kill -9).

Wir verwenden für cygwin einen separaten Ansatz, da cygwin aus irgendeinem Grund keine Prozesse sieht, die extern in einer Windows-Umgebung gestartet werden.

2, 3) MsysGit, TortoiseGit

Nützlicher Link: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent

Installieren Sie MsysGit. Installieren Sie TortoiseGit (überprüfen Sie während der Installation openssh anstelle von plink). !!! Überprüfen Sie die Systemvariablen. Wenn die Variable GIT_SSH vorhanden ist, entfernen Sie sie.

Gehen Sie zu TortoiseGit-> Einstellungen-> Allgemein

Setze Git exe Path auf/bin Setze External dll path auf/mingw/bin

Gehen Sie zu TortoiseGit-> Einstellungen-> Netzwerk Setzen Sie die SSH-Client-Eigenschaft auf /bin/ssh.exe

Definieren Sie die Systemvariable SSH_AUTH_SOCKS = C:\temp.ssh-socket

Starten Sie cmd.exe und führen Sie die folgenden Befehle aus (seit der Installation von MsysGit sind alle folgenden Befehle in cmd verfügbar -/bin wird der System-PATH-Variablen hinzugefügt):

# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"

# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"

# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"

# Type password for your key

Das ist es. Von diesem Moment an können Sie git Push, git pull von TortoiseGit und MsysGit ausführen, ohne eine Passphrase einzugeben.

Wenn der ssh-agent nicht mehr benötigt wird, können Sie ihn über den Windows-Task-Manager beenden.

4
ydrozhdzhal

Keine der obigen Antworten hat für mich funktioniert.

Ich habe diese Batch-Datei erstellt, um das Problem zu lösen.

CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

Führen Sie dies einmal aus und geben Sie Ihre Passphrase ein.

Dann können Sie tortoisegit mit openssh verwenden, ohne für jede Operation Ihr Passwort eingeben zu müssen.

3
Michael Marcin

Stellen Sie sicher, dass Sie TortoiseGit in einer Umgebung starten, in der HOME definiert ist, und verweisen Sie auf das übergeordnete Verzeichnis von .ssh.
Dies ist wichtig, da HOME unter Windows nicht standardmäßig definiert ist.

Siehe als Beispiel: " Auth schlägt unter Windows fehl XP mit git und tortoisegit ".
(Andere mögliche Quellen: " Wie kann ich Git für Windows mitteilen, wo sich mein privater RSA-Schlüssel befindet? ")

2
VonC

Da die Erläuterungen hier etwas veraltet sind, habe ich mich entschlossen, meine Lösung zu posten.

Ich benutze Git Bash und TortoiseGit 2.8.0 in Windows 10, die heutzutage üblich sind.

Ich setze ssh.exe als SSH-Client in Settings->Network wie in vorherigen Beiträgen erklärt.

Ich habe ein Skript mit den folgenden Befehlen erstellt, wie in einem vorherigen Kommentar erläutert. Sie können auch eine HOME-Umgebungsvariable festlegen, falls Ihr System dies nicht automatisch tut. Angenommen, Ihr Zuhause befindet sich in Laufwerk H: \, können Sie die folgenden Zeilen hinzufügen:

SETX HOME /h
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

Ich habe das Skript mit hinzugefügt Win logo+R Shell:startup in den Startordner. Alternativ können Sie das Skript zur Registrierung hinzufügen, um sicherzustellen, dass es vor anderen Prozessen ausgeführt wird:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

Stellen Sie sicher, dass Sie exit eingeben, um die Konsole zu schließen und zuzulassen, dass die Variable für zukünftige Prozesse festgelegt wird.

2
Sergio Roa

Es scheint eine ganze Reihe von Möglichkeiten zu geben, um dieses Problem zu lösen. Da keiner der oben genannten Punkte für mich funktioniert hat, dachte ich, ich würde mitteilen, was mir geholfen hat.

Screenshot: Netzwerkeinstellungen/Git SSH Client

Im Settings... -> Network -> SSH -> SSH client, setze den Client auf C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe. Wenn Sie Pageant verwenden, werden Sie automatisch wie erwartet authentifiziert, andernfalls werden Sie zur Eingabe Ihrer Passphrase für den privaten Schlüssel aufgefordert. Stellen Sie sicher, dass die Option "Autoload PuTTY Key" im Dialogfeld "Push" aktiviert ist.

2
Lupinity Labs