ViewRevisions

Com usar una clau GPG per a SSH

L’agent de GnuPG permet ser emprat com a agent SSH, és a dir, permet que fem servir les nostres claus GPG per a autenticar‐nos amb sistemes remots mitjançant SSH, evitant‐nos així haver de gestionar un altre parell de claus amb la respectiva contrasenya. Vaig a explicar breument com aconseguir açò.

Per a començar necessitem tenir activat l’agent GnuPG amb la funció d’agent SSH. Si tenim un sistema operatiu Debian o derivat només cal instaŀlar el paquet gnupg-agent i afegir al nostre fitxer ~/.gnupg/gpg-agent.conf una línia enable-ssh-support. En reiniciar la nostra sessió X tindrem l’agent llest.

Vaig a assumir que ja disposem d’un parell de claus GPG. Si no és així, aquest és el moment de generar‐les! Recomane seguir el xicotet manual d’Ana, que també descriu com fer‐ho evitant el vulnerable algorisme SHA-1.

Anem a necessitar alguna clau GPG amb capacitat d’autenticació. Per a no toquetejar les nostres claus principals el més senzill és generar una nova subclau expressament per a tal efecte. Podem fer‐ho directament amb gpg, però trobe que és molt més senzill fer‐ho emprant Monkeysphere. Només cal instaŀlar el paquet monkeysphere i executar:

$ monkeysphere gen-subkey --length MIDA

On MIDA és la mida en bits de la subclau (p.ex. 4096). Per a importar la subclau a l’agent també farem servir monkeysphere:

$ monkeysphere subkey-to-ssh-agent

Si monkeysphere es queixa de que no ha trobat cap clau adequada, haurem d’indicar‐li l’empremta completa de la subclau d’autenticació, que podem obtenir executant:

$ gpg --list-keys --fingerprint --fingerprint --with-colons ID

On ID és l’identificador de la nostra clau GPG, i l’opció duplicada és correcta (sí!). Al final de l’eixida veurem quelcom com açò:

sub:u:4096:1:0123456789ABCDEF:2011-04-03::::::a:
fpr:::::::::00112233445566778899AABB0123456789ABCDEF:

La línia començada en sub i acabada en :a: correspon a la subclau d’autenticació, i la línia fpr següent a la seua empremta. Posem l’empremta en la variable d’entorn MONKEYSPHERE_SUBKEYS_FOR_AGENT i tornem a provar:

$ MONKEYSPHERE_SUBKEYS_FOR_AGENT=00112233445566778899AABB0123456789ABCDEF
$ export MONKEYSPHERE_SUBKEYS_FOR_AGENT
$ monkeysphere subkey-to-ssh-agent

En acabant tindrem ja carregada la subclau GPG d’autenticació a l’agent GnuPG. Podem comprovar que així és executant ssh-add -L i propagar‐la a uns altres sistemes amb ssh-copy-id.

Això és tot! Ara que açò funciona val la pena fer un repàs als diferents manuals que ha publicat Vicent per a autenticar‐se amb la contrasenya d’SSH i compartir les claus SSH carregades entre les diferents sessions obertes a una màquina. Quin luxe, emprar la clau GPG per a tot i a penes haver d’entrar contrasenyes! Però ara procureu no deixar tant l’ordinador desatès, i si ho feu, recordeu que pkill -HUP gnupg-agent fa que l’agent oblide les contrasenyes (una drecera de teclat aniria bé).

Per a acabar vull dir que amb Monkeysphere he fet un descobriment que em té molt intrigat. Es tracta de crear les eines necessàries per a aplicar tota la web of trust d’OpenPGP, que és una xarxa de confiança distribuïda, a l’autenticació d’usuaris i llocs SSH i HTTPS. Recordem que la infraestructura de clau pública de la web segueix una estructura descentralitzada que depén de les autoritats de certificació (CA), i que són el desenvolupadors i distribuïdors dels navegadors web (i no els seus usuaris) els que decideixen quines autoritats, llocs i usuaris són de confiança… ho estudiaré i n’informaré!