Le chiavi GPG e SSH sono intercambiabili?


70

Voglio generare una RSAchiave GPGe usarla nel SSHlogin. È anche possibile? Se é cosi, come?

modifica: vedi la risposta di @wwerner, non l'ho provato ma sembra essere la soluzione attuale (a partire dal 2018)

Risposte:


26

So che questo è un vecchio post, ma per le persone come me inciampare su questo:

E 'ora (dal gpg 2.1) possibile estrarre semplicemente le chiavi SSH direttamente usando gpg: gpg --export-ssh-key <key id>!.

Il !segno è facoltativo, rende esportabile la chiave primaria e omette di verificare se la chiave è abilitata all'autenticazione ([CA]).

Dettagli:


Questa risposta dovrebbe essere quella accettata. :)
Inkeliz,

30

Sto facendo delle ricerche su questo argomento e posso darti alcuni suggerimenti, ma non ho ancora trovato un modo per farlo funzionare.

Monkeysphere

Monkeysphere sembra un progetto molto interessante, ma non sono stato in grado di compilarlo su Mac OS X senza intasare il mio piccolo spazio libero su disco con MacPorts.

Usando gpgkey2ssh

Il primo modo che ti suggerisco di provare è di generare una voce authorized_keys compatibile dal tuo ID chiave (ad esempio, BFB2E5E3) con

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

Qui l'ho aggiunto al mio localhost da quando ho eseguito un server SSH a scopo di test, ma ovviamente dovresti aggiungerlo all'host di destinazione ~/.ssh/authorized_keys. Quindi devi dire a SSH di utilizzare la parte privata di questa chiave durante l'autenticazione, ma semplicemente esportare una versione corazzata ASCII della coppia di chiavi non funziona:

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

Usando gpg-agent

gpg-agentha l'opzione --enable-ssh-supportche gli consente di usarlo come sostituto drop-in per il noto ssh-agent. Ho letto di alcune persone che cercano di aggiungere tramite la ssh-addloro chiave GPG dopo aver avviato in gpg-agentquesto modo:

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

Ma non penso che funzionerà mai. La manpage di gpg-agent dice:

Le chiavi SSH, che devono essere utilizzate tramite l'agente, devono essere aggiunte inizialmente all'agente gpg tramite l'utility ssh-add. Quando viene aggiunta una chiave, ssh-add chiederà la password del file della chiave fornito e invierà all'agente il materiale della chiave non protetto; questo fa sì che l'agente gpg richieda una passphrase, che deve essere utilizzata per crittografare la chiave appena ricevuta e archiviarla in una directory specifica dell'agente gpg.

Quindi sembra che gpg-agentdovrebbe essere usato come misura aggiuntiva per proteggere le chiavi SSH con una crittografia GPG.

Conversione di una chiave GPG in OpenSSH

Jérôme Pouiller nel suo blog scrive che l'utility Gpgsm può esportare chiavi e certificati in PCSC12; possono quindi essere utilizzati da OpenSSH:

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

Ma non ho trovato il modo di gpgsmaccettare le mie chiavi di gpg.

Altre cose che puoi provare

SSH ha -Iun'opzione per specificare la libreria condivisa PKCS # 11 da sshutilizzare per comunicare con un token PKCS # 11 che fornisce la chiave RSA privata dell'utente. ssh-keygenpuò usare la chiave pubblica o privata RFC4716 / SSH2, le chiavi pubbliche PK PKCS8 e le chiavi pubbliche PEM per generare una chiave privata (o pubblica) compatibile OpenSSH usando le opzioni -ie -m.

Non riesco ancora a trovare un modo per mettere tutto insieme.


5
Si noti che gpgkey2sshè stato sostituito dalla --export-ssh-keyversione 2.1.11 (26-01-2016). Mi ci è voluto un po 'per rendermene conto. L'uso è gpg --export-ssh-key BFB2E5E3.
MayeulC,


C'è un buon post su Linode ma hanno usato gpg-agent per autenticarsi con SSH. Non convertono la chiave segreta gpg in una chiave privata SSH.
Xorax,

14

No, non sono intercambiabili. Sì, è possibile utilizzare le chiavi GPG per l'autenticazione: il pacchetto Monkeysphere ha strumenti per estrarre la coppia di chiavi RSA non elaborata dal certificato GPG.

  1. Il tuo certificato GPG avrà bisogno di una sottochiave con il flag di capacità "autenticazione". Per creare una tale sottochiave, esegui una volta:

    monkeysphere g
    
  2. Ora aggiungi le tue sottochiavi di autenticazione a ssh-agent :

    monkeysphere s
    

Un po 'rilevante: questo thread di utenti di gnupg .


9

Con le informazioni delle risposte a questa domanda e l'aiuto della mailing list degli utenti di gnupg sono stato in grado di capire come usare la mia chiave GPG per l'autenticazione SSH. Come già accennato da Claudio Floreani nella sua risposta, ci sono alcuni metodi possibili per farlo.

Ho scritto un post sul blog su alcune possibili soluzioni: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

Per riassumere: O usi GnuPG 2.1, che è attualmente in beta. Quando usi questa versione, puoi semplicemente avviare gpg-agent con l'opzione --enable-ssh-support e aggiungere il keygrip per la tua chiave GPG (o sottochiave) in ~ / .gnupg / sshcontrol.

Quando stai usando l'attuale versione stabile di GnuPG (2.0.x) puoi usare monkeysphere per aggiungere la tua chiave a gpg-agent (di nuovo, dopo aver avviato gpg-agent con l'opzione --enable-ssh-support).

È anche possibile usare il portachiavi GNOME (o persino il normale agente ssh) con l'aiuto della monkeysphere. L'unico problema in questo caso è che dovrai aggiungere nuovamente la tua chiave quando accedi di nuovo (in Gnome o XFCE). Per risolvere questo problema puoi esportare manualmente la tua chiave e convertirla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.