Come usare insieme gpg e SSH? [duplicare]


11

Possibile duplicato:
le chiavi GPG e SSH sono intercambiabili?

Come usare insieme gpg e SSH?

Conosco le procedure di base di 1) utilizzo di gpg per crittografare e decrittografare file di testo e 2) generazione e utilizzo di chiavi SSH per accedere a server remoti senza password.

Mi chiedo se i due possano essere integrati. I due non sono correlati e dovrebbero essere separati nel loro uso quotidiano?

Risposte:


7

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 un modo per far 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.


1
Per riferimento futuro, se trovi due domande sostanzialmente identiche, puoi contrassegnarle come duplicate (utilizzando il flaglink sotto la domanda), anziché pubblicare due volte la stessa risposta. Grazie per la risposta dettagliata!
Pensa al

Spiacenti, non conosco questa funzione. Grazie
Claudio Floreani,

2
Non sono sicuro di cosa stai cercando di realizzare gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Stai usando teesolo per vedere l'output? L'output di questo comando non è adatto all'uso da parte di ssh-add; il id_rsafile generato non può essere caricato in o ssh-agento gpg-agent, né può essere utilizzato direttamente da ssh.
Larks


2

Tecnicamente sì, le chiavi PGP possono essere utilizzate per l'autenticazione SSH. Ciò che le persone chiamano "chiave PGP" è più un certificato , che contiene RSA ordinaria, ECDSA o altre coppie di chiavi (chiave primaria e sottochiavi) insieme ai metadati del certificato. In effetti, esiste persino un flag di utilizzo "autenticazione" definito.

Tuttavia, non è consigliabile utilizzare la stessa chiave per più scopi; tuttavia, questo può essere facilmente risolto in quanto è possibile aggiungere facilmente una sottochiave di sola autenticazione al certificato PGP (tramite gpg --expert --edit-key). Avrai una chiave primaria di firma / certificazione, una sottochiave di crittografia e una sottochiave di autenticazione.

In pratica, tuttavia, non sono stato in grado di capire come autenticarmi utilizzando una chiave PGP direttamente, anche se sono stato troppo pigro per provare diverse idee. La suite Monkeysphere ha uno strumento per aggiungere le tue sottochiavi di autenticazione GPG a ssh-agent, dovrebbe essere semplice. Ma ci dovrebbero essere alcuni post Super User più vecchi su questo.


Grazie per l'informazione. Sono utili ma non sufficienti per rispondere alla mia domanda. Non so ancora come integrare i miei certificati PGP e le chiavi SSH.
qazwsx,

Dai documenti di Monkeysphere; monkeysphere subkey-to-ssh-agentper caricare la chiave nell'agente.
user1686
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.