Wie verwende ich gpg und SSH zusammen? [Duplikat]

11

Mögliches Duplikat:
Sind GPG- und SSH-Schlüssel austauschbar?

Wie verwende ich gpg und SSH zusammen?

Ich kenne die grundlegenden Verfahren: 1) Verwenden von GPG zum Ver- und Entschlüsseln von Textdateien und 2) Generieren und Verwenden von SSH-Schlüsseln für den Zugriff auf Remote-Server ohne Kennwörter.

Ich frage mich, ob die beiden integriert werden können. Sind die beiden nicht verwandt und sollten im täglichen Gebrauch getrennt werden?

qazwsx
quelle

Antworten:

7

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 verstopfen.

Verwenden von gpgkey2ssh

Der erste Weg, den Sie vorschlagen sollten, besteht darin, aus Ihrer Schlüssel-ID (z. B. BFB2E5E3) einen kompatiblen Eintrag für autorisierte Schlüssel zu generieren mit:

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

Hier habe ich es meinem lokalen Host hinzugefügt, da ich zu Testzwecken einen SSH-Server 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. Das einfache Exportieren einer gepanzerten ASCII-Version des Schlüsselpaars funktioniert jedoch 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

Mit gpg-agent

gpg-agenthat die Option, --enable-ssh-supportdass es als Drop-In-Ersatz für die bekannten verwendet werden kann ssh-agent. Ich habe von einigen Leuten gelesen, die ssh-addnach dem Start auf gpg-agentdiese Weise versuchen, über ihren GPG-Schlüssel hinzuzufügen :

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 glaube nicht, dass das jemals funktionieren wird. Die gpg-agent Manpage sagt:

SSH-Schlüssel, die über den Agenten verwendet werden sollen, müssen dem gpg-agent zunächst über das Dienstprogramm ssh-add hinzugefügt werden. Wenn ein Schlüssel hinzugefügt wird, fragt ssh-add nach dem Kennwort der bereitgestellten Schlüsseldatei und sendet das ungeschützte Schlüsselmaterial an den Agenten. Dies führt dazu, dass der GPG-Agent nach einer Passphrase fragt, die zum Verschlüsseln des neu empfangenen Schlüssels und zum Speichern in einem für den GPG-Agenten spezifischen Verzeichnis verwendet werden soll.

Es scheint also, dass gpg-agentdies als zusätzliche Maßnahme zum Schutz Ihrer SSH-Schlüssel mit einer GPG-Verschlüsselung verwendet werden sollte.

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 keinen Weg gefunden gpgsm, meine GPG-Schlüsselpaare zu akzeptieren.

Andere Dinge, die Sie versuchen können

SSH hat die -IOption, die gemeinsam genutzte PKCS # 11-Bibliothek anzugeben, die sshfür die Kommunikation mit einem PKCS # 11-Token verwendet werden soll, das den privaten RSA-Schlüssel des Benutzers bereitstellt. ssh-keygenSie können den öffentlichen oder privaten RFC4716 / SSH2-Schlüssel, die öffentlichen PEM PKCS8-Schlüssel und die öffentlichen PEM-Schlüssel verwenden, um mithilfe der Optionen -iund einen OpenSSH-kompatiblen privaten (oder öffentlichen) Schlüssel zu generieren -m.

Trotzdem kann ich keinen Weg finden, alles zusammenzufügen.

Claudio Floreani
quelle
1
Wenn Sie zum späteren Nachschlagen zwei Fragen finden, die im Wesentlichen identisch sind, können Sie sie als Duplikate kennzeichnen (über den flagLink unter der Frage), anstatt dieselbe Antwort zweimal zu veröffentlichen. Vielen Dank für die ausführliche Antwort!
nhinkle
Entschuldigung, ich weiß nichts über diese Funktion. Vielen Dank
Claudio Floreani
2
Ich bin mir nicht sicher, womit Sie etwas erreichen wollen gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Verwenden Sie teenur, damit Sie die Ausgabe sehen können? Die Ausgabe dieses Befehls ist nicht für die Verwendung durch geeignet ssh-add. die erzeugte id_rsaDatei in entweder nicht geladen werden kann ssh-agentoder gpg-agent, noch kann sie direkt verwendet werden ssh.
Larsks
2

Technisch gesehen können PGP-Schlüssel für die SSH-Authentifizierung verwendet werden. Was als "PGP-Schlüssel" bezeichnet wird, ist eher ein Zertifikat , das gewöhnliche RSA-, ECDSA- oder andere Schlüsselpaare (Primärschlüssel und Unterschlüssel) sowie die Metadaten des Zertifikats enthält. Tatsächlich ist sogar ein Verwendungsflag "Authentifizierung" definiert.

Es wird jedoch nicht empfohlen, denselben Schlüssel für mehrere Zwecke zu verwenden. Dies ist jedoch leicht zu lösen, da Sie Ihrem PGP-Zertifikat (via gpg --expert --edit-key) problemlos einen Unterschlüssel nur für die Authentifizierung hinzufügen können . Sie haben einen Primärschlüssel für die Signatur / Zertifizierung, einen Unterschlüssel für die Verschlüsselung und einen Unterschlüssel für die Authentifizierung.

In der Praxis konnte ich jedoch nicht herausfinden, wie ich mich direkt mit einem PGP-Schlüssel authentifizieren kann, obwohl ich einfach zu faul war, um mehrere Ideen auszuprobieren. Die Monkeysphere-Suite verfügt über ein Tool zum Hinzufügen Ihrer GPG-Authentifizierungsunterschlüssel zu ssh-agent. Dies sollte einfach sein. Es sollte aber ein paar ältere Super User-Beiträge dazu geben.

user1686
quelle
Danke für die Auskunft. Sie sind nützlich, aber nicht ausreichend, um meine Frage zu beantworten. Ich weiß immer noch nicht, wie ich meine PGP-Zertifikate und SSH-Schlüssel integrieren soll.
Qazwsx
Aus Monkeysphere-Dokumenten; monkeysphere subkey-to-ssh-agentum Ihren Schlüssel in den Agenten zu laden.
user1686