Gpg-Agent unter Windows als SSH-Agent für git bash

1475
Ron

gpg-agent verfügt über die Optionen "--enable-ssh-support" und "--enable-putty-support", mit denen es als Drop-In-Ersatz für den bekannten ssh-agent verwendet werden kann.

Ich habe mir die Haare ausgezogen und versucht herauszufinden, wie genau dies in Windows und git-bash funktioniert. (Bitte schlage mich nicht vor, putty zu verwenden, da ich viele Skripte und andere Programme habe, die mit git bash und openssh in meiner Windows-PC-Maschine, einschließlich PHPStorm usw., arbeiten müssen).

Mein erster Versuch bestand darin, eine enable-ssh-supportZeile in der C:\Users\[user]\AppData\Roaming\gnupg\gpg-agent.confDatei zu haben.

Und export SSH_AUTH_SOCK=/c/users/[user]/AppData/Roaming/gnupg/S.gpg-agent.sshZeile in /c/users/[user]/.bash_profileDatei. (auch ich habe eine Windows-Umgebungsvariable SSH_AUTH_SOCKmit dem Wert erstellt C:\Users\[username]\AppData\Roaming\gnupg\S.gpg-agent.ssh)

Ich habe meinen GPG-Geheimschlüssel im Schlüsselring, wobei Authentifizierungs- und Verschlüsselungs-Unterschlüssel aktiviert sind.

und ich fügte der C:\Users\[user]\AppData\Roaming\gnupg\sshcontrolDatei den Schlüsselschlüssel des aktivierten Unterschlüssels hinzu .

Da GnuPG 2.2.4 mit der Option --export-ssh-key geliefert wird, muss ich monkeysphereden GPG-Schlüssel nicht in das OpenSSH-Format konvertieren. Also exportierte ich meinen öffentlichen Schlüssel und platzierte ihn mit den richtigen Berechtigungen in einer Authorized_keys-Datei in einer Remote-Linux-Box (getestet mit einem anderen Computer mit Putty).

Dann habe ich ausgeführt: gpg-connect-agent killagent /byeund gpg-connect-agent /byein PowerShell (und der gpg-Agent wurde im Hintergrund ausgeführt und die S.gpg-agent.sshSOCK-Datei erstellt).

Dann wurde versucht, auf die normale Weise ssh in den Server einzulegen.

Und es gab mir einen Fehler.

Dann habe ich versucht, die Putty-Unterstützung zu aktivieren ( enable-putty-supportLine-In gpg-agent.confermöglicht es Ihnen, die Putty-Unterstützung zu aktivieren.

Darüber hinaus müssen Sie eine enviornment Variable in Windows erstellen GIT_SSH='C:\ProgramData\chocolatey\bin\PLINK.EXE')

Dann habe ich versucht, OpenSSH zu verwenden, das mit dem chocolatey package manager ebenfalls mitgeliefert wird.

Keiner von ihnen funktionierte wie erwartet.

schließlich gab ich alles auf und versuchte, mich nur mit putty und gpg-agent zu verbinden. Ich habe auch git-bash deinstalliert. Dann habe ich einfach versucht, GnuPG und Putty zu verwenden.

Ich habe Agent Forwarding in putty ssh -> auth erlaubt. dann habe ich versucht mich mit dem server zu verbinden, aber es fragt immer noch nach dem passwort. gpg-agent leitet den Schlüssel nicht weiter, erkennt aber gpg-agentalsPAGEANT

Eventlog in Kitt:

2018-02-10 16:48:51 Connecting to xx.xxx.xxx.xx port 22 2018-02-10 16:48:51 We claim version: SSH-2.0-PuTTY_Release_0.70 2018-02-10 16:48:52 Server version: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 2018-02-10 16:48:52 We believe remote version has SSH-2 channel request bug 2018-02-10 16:48:52 Using SSH protocol version 2 2018-02-10 16:48:52 Doing ECDH key exchange with curve Curve25519 and hash SHA-256 2018-02-10 16:48:53 Server also has ecdsa-sha2-nistp256/ssh-dss/ssh-rsa host keys, but we don't know any of them 2018-02-10 16:48:53 Host key fingerprint is: 2018-02-10 16:48:53 ssh-ed25519 256 1f:7b:5d:c4:b4:ae:5d:81:72:da:1d:c8:b2:cc:67:7b 2018-02-10 16:48:53 Initialised AES-256 SDCTR client->server encryption 2018-02-10 16:48:53 Initialised HMAC-SHA-256 client->server MAC algorithm 2018-02-10 16:48:53 Initialised AES-256 SDCTR server->client encryption 2018-02-10 16:48:53 Initialised HMAC-SHA-256 server->client MAC algorithm 2018-02-10 16:49:07 Pageant is running. Requesting keys. 2018-02-10 16:49:07 Pageant has 0 SSH-2 keys

Kannst du mein Problem erkennen? Im Kittprotokoll

2
Hallo Ron, vielleicht hättest du das in mehrere kleinere Probleme einteilen sollen. Hast du immer noch das Problem? Vlastimil Ovčáčík vor 6 Jahren 0
Ich vermute, der Grund, warum es in git-bash nicht funktioniert, liegt entweder daran, wie git-bash mit Sockets umgeht, oder wie gpg-agent unter Windows diesen Socket verfügbar macht. Ich kann jedoch bestätigen, dass es möglich ist (zumindest ab heute, als ich es gerade ausprobiert habe), gpg-agent mindestens mit PuTTY zu verwenden. Wenn Sie den Umfang Ihrer Frage einschränken möchten, gebe ich Ihnen gerne die von mir verwendeten Schritte. demonbane vor 6 Jahren 0

1 Antwort auf die Frage

2
Vlastimil Ovčáčík

Nehmen wir es Schritt für Schritt.

1 Pageant has 0 SSH-2 keys

Das blockiert dich gerade jetzt. Ich gehe davon aus, dass Sie das Protokoll protokollieren, aber Sie führen gpg-agent tatsächlich im Hintergrund aus. Möglicherweise möchten Sie dies noch einmal überprüfen, bevor Sie fortfahren.

Stellen Sie sicher, dass der gpg-agent den Schlüssel geladen hat, den Sie für die ssh-Authentifizierung benötigen.

> gpg --version gpg (GnuPG) 2.1.21 ...  > gpg -k --with-keygrip ... sub rsa4096/0x0123456789ABCDEF 2018-01-01 [A] [expires: 2019-01-01] Keygrip = 0123456789ABCDEF0123456789ABCDEF01234567 ...  > gpg-connect-agent "keyinfo --list" /bye ... S KEYINFO 0123456789ABCDEF0123456789ABCDEF01234567 T xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENPGP.3 - - - - - ... OK 

Auf diese Weise können Sie bestätigen, dass Ihr gpg-Agent den erwarteten Schlüssel geladen hat. Der nächste Schritt wäre, sicherzustellen, dass der Server den richtigen Schlüssel anfordert.

2. TBA