Antworten:
Ich weiß, dass dies ein alter Beitrag ist, aber für Leute wie mich, die darüber stolpern:
Es ist jetzt (seit gpg 2.1) möglich, ssh-Schlüssel direkt mit gpg: zu extrahieren
gpg --export-ssh-key <key id>!
.
Die !
Markierung ist optional, macht den Primärschlüssel exportierbar und lässt die Überprüfung, ob der Schlüssel authentifizierungsfähig ist ([CA]), aus.
Einzelheiten:
Ich recherchiere zu diesem Thema und kann Ihnen einige Hinweise geben, aber ich habe noch keinen Weg gefunden, es zum Laufen zu bringen.
Monkeysphere scheint ein sehr interessantes Projekt zu sein, aber ich konnte es unter Mac OS X nicht kompilieren, ohne meinen kleinen freien Speicherplatz mit MacPorts zu belasten.
Ich empfehle Ihnen zunächst, einen kompatiblen authorized_keys-Eintrag aus Ihrer Schlüssel-ID (z. B. BFB2E5E3) mit zu generieren
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Hier habe ich es meinem localhost hinzugefügt, da ich einen ssh-Server zu Testzwecken ausgeführt habe, aber natürlich sollten Sie dies dem Zielhost hinzufügen ~/.ssh/authorized_keys
. Als nächstes müssen Sie SSH anweisen, den privaten Teil dieses Schlüssels während der Authentifizierung zu verwenden, aber das einfache Exportieren einer ASCII-gepanzerten Version des Schlüsselpaars funktioniert nicht:
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost
gpg-agent
hat die Option --enable-ssh-support
, es als Ersatz für das Bekannte zu verwenden ssh-agent
. Ich habe von einigen Leuten gelesen, die ssh-add
nach dem Start über ihren GPG-Schlüssel versuchen, etwas hinzuzufügen gpg-agent
:
gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
Aber ich denke nicht, dass das jemals funktionieren wird. Die gpg-agent manpage sagt:
SSH-Schlüssel, die über den Agenten verwendet werden sollen, müssen zunächst über das Dienstprogramm ssh-add zum gpg-Agenten hinzugefügt werden. Wenn ein Schlüssel hinzugefügt wird, fragt ssh-add nach dem Kennwort der angegebenen Schlüsseldatei und sendet das ungeschützte Schlüsselmaterial an den Agenten. dies veranlasst den gpg-agent, nach einer passphrase zu fragen, mit der der neu empfangene schlüssel verschlüsselt und in einem gpg-agent-spezifischen verzeichnis gespeichert wird.
Daher gpg-agent
sollte dies als zusätzliche Maßnahme zum Schutz Ihrer SSH-Schlüssel mit einer GPG-Verschlüsselung verwendet werden.
Jérôme Pouiller schreibt in seinem Blog , dass das Dienstprogramm Gpgsm Schlüssel und Zertifikate in PCSC12 exportieren kann. Sie können dann von OpenSSH verwendet werden:
gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub
Aber ich habe keine Möglichkeit gefunden gpgsm
, meine gpg-Schlüsselpaare zu akzeptieren.
In SSH kann -I
optional angegeben werden, welche gemeinsam genutzte PKCS # 11-Bibliothek ssh
für die Kommunikation mit einem PKCS # 11-Token verwendet werden soll, das den privaten RSA-Schlüssel des Benutzers bereitstellt.
ssh-keygen
Mit dem öffentlichen oder privaten RFC4716 / SSH2-Schlüssel, dem öffentlichen PEM PKCS8-Schlüssel und dem öffentlichen PEM-Schlüssel kann mit den Optionen -i
und ein OpenSSH-kompatibler privater (oder öffentlicher) Schlüssel generiert werden -m
.
Ich kann immer noch keinen Weg finden, alles zusammenzufügen.
gpgkey2ssh
durch ersetzt wurde --export-ssh-key
ab Version 2.1.11 (2016.01.26). Ich brauchte eine Weile, um das zu realisieren. Verwendung ist gpg --export-ssh-key BFB2E5E3
.
Nein, sie sind nicht austauschbar. Ja, es ist möglich, GPG-Schlüssel zur Authentifizierung zu verwenden. Das Monkeysphere- Paket enthält Tools zum Extrahieren des unformatierten RSA-Schlüsselpaars aus Ihrem GPG-Zertifikat.
Ihr GPG-Zertifikat benötigt einen Unterschlüssel mit dem Funktionsflag "Authentifizierung". Führen Sie einmal aus, um einen solchen Unterschlüssel zu erstellen:
monkeysphere g
Fügen Sie nun Ihre Authentifizierungsunterschlüssel zu ssh-agent hinzu :
monkeysphere s
Etwas relevant: dieser Gnupg-User-Thread .
Mit den Informationen aus den Antworten auf diese Frage und der Hilfe der Mailingliste von gnupg-users konnte ich herausfinden, wie ich meinen GPG-Schlüssel für die SSH-Authentifizierung verwenden kann. Wie bereits von Claudio Floreani in seiner Antwort erwähnt, gibt es hierfür einige Möglichkeiten.
Ich habe einen Blogpost über mögliche Lösungen geschrieben: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Zusammenfassend: Entweder Sie verwenden GnuPG 2.1, das sich derzeit in der Beta befindet. Wenn Sie diese Version verwenden, können Sie gpg-agent einfach mit der Option --enable-ssh-support starten und den Keygrip für Ihren GPG-Schlüssel (oder Unterschlüssel) in ~ / .gnupg / sshcontrol einfügen.
Wenn Sie die aktuelle stabile GnuPG-Version (2.0.x) verwenden, können Sie mit monkeysphere Ihren Schlüssel zu gpg-agent hinzufügen (erneut, nachdem Sie gpg-agent mit der Option --enable-ssh-support gestartet haben).
Es ist auch möglich, den GNOME-Schlüsselring (oder sogar den regulären ssh-Agenten) mit Hilfe von monkeysphere zu verwenden. Das einzige Problem in diesem Fall ist, dass Sie Ihren Schlüssel erneut hinzufügen müssen, wenn Sie sich erneut anmelden (in Gnome oder XFCE). Um dies zu lösen, können Sie Ihren Schlüssel manuell exportieren und konvertieren.