Sind GPG- und SSH-Schlüssel austauschbar?

70

Ich möchte einen RSAKey generieren GPGund diesen beim SSHLogin verwenden. Ist das überhaupt möglich? Wenn das so ist, wie?

edit: see @ wwerner's answer, ich habe es nicht ausprobiert, aber es scheint die aktuelle Lösung zu sein (Stand 2018)

destan
quelle

Antworten:

26

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:

wwerner
quelle
Diese Antwort sollte die akzeptierte sein. :)
Inkeliz
30

Ich recherchiere zu diesem Thema und kann Ihnen einige Hinweise geben, aber ich habe noch keinen Weg gefunden, es zum Laufen zu bringen.

Affensphäre

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.

Verwendung von gpgkey2ssh

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 verwenden

gpg-agenthat die Option --enable-ssh-support, es als Ersatz für das Bekannte zu verwenden ssh-agent. Ich habe von einigen Leuten gelesen, die ssh-addnach 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-agentsollte dies als zusätzliche Maßnahme zum Schutz Ihrer SSH-Schlüssel mit einer GPG-Verschlüsselung verwendet werden.

Konvertieren eines GPG-Schlüssels in OpenSSH

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.

Andere Dinge, die Sie ausprobieren können

In SSH kann -Ioptional angegeben werden, welche gemeinsam genutzte PKCS # 11-Bibliothek sshfür die Kommunikation mit einem PKCS # 11-Token verwendet werden soll, das den privaten RSA-Schlüssel des Benutzers bereitstellt. ssh-keygenMit dem öffentlichen oder privaten RFC4716 / SSH2-Schlüssel, dem öffentlichen PEM PKCS8-Schlüssel und dem öffentlichen PEM-Schlüssel kann mit den Optionen -iund ein OpenSSH-kompatibler privater (oder öffentlicher) Schlüssel generiert werden -m.

Ich kann immer noch keinen Weg finden, alles zusammenzufügen.

Claudio Floreani
quelle
5
Beachten Sie, dass gpgkey2sshdurch ersetzt wurde --export-ssh-keyab Version 2.1.11 (2016.01.26). Ich brauchte eine Weile, um das zu realisieren. Verwendung ist gpg --export-ssh-key BFB2E5E3.
MayeulC
Es gibt einen guten Beitrag auf Linode, aber sie haben gpg-agent verwendet, um sich bei SSH zu authentifizieren. Sie konvertieren den geheimen gpg-Schlüssel nicht in einen privaten SSH-Schlüssel.
Xorax
14

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.

  1. 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
    
  2. Fügen Sie nun Ihre Authentifizierungsunterschlüssel zu ssh-agent hinzu :

    monkeysphere s
    

Etwas relevant: dieser Gnupg-User-Thread .

Grawity
quelle
9

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.

jeroen
quelle