Risposte:
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:
Sto facendo delle ricerche su questo argomento e posso darti alcuni suggerimenti, ma non ho ancora trovato un modo per farlo funzionare.
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.
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
gpg-agent
ha l'opzione --enable-ssh-support
che 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-add
loro chiave GPG dopo aver avviato in gpg-agent
questo 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-agent
dovrebbe essere usato come misura aggiuntiva per proteggere le chiavi SSH con una crittografia GPG.
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 gpgsm
accettare le mie chiavi di gpg.
SSH ha -I
un'opzione per specificare la libreria condivisa PKCS # 11 da ssh
utilizzare per comunicare con un token PKCS # 11 che fornisce la chiave RSA privata dell'utente.
ssh-keygen
può 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 -i
e -m
.
Non riesco ancora a trovare un modo per mettere tutto insieme.
gpgkey2ssh
è stato sostituito dalla --export-ssh-key
versione 2.1.11 (26-01-2016). Mi ci è voluto un po 'per rendermene conto. L'uso è gpg --export-ssh-key BFB2E5E3
.
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.
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
Ora aggiungi le tue sottochiavi di autenticazione a ssh-agent :
monkeysphere s
Un po 'rilevante: questo thread di utenti di gnupg .
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.