El teu blog de Linux en català

Identificació per clau pública+privada en una connexió segura

Fins avui, hem vist un parell d’eines que permeten la connexió segura entre dues màquines a través del protocol ssh (en el cas de Linux, l’estem fent amb la implementació lliure openssh). Els dos programes que hem vist fins ara, i que formen part del grup d’eines de ssh són el scp i el sftp (totes dues ens servien per a copiar fitxers de forma segura entre equips). El protocol ssh funciona amb una arquitectura client-servidor. És a dir, hi ha un ordinador (el client) des del qual ens connectem a un equip remot (el servidor). Com vam veure en l’anotació del sftp, a la majoria de distribucions hi ha instal·lat el client ssh (per a poder-nos connectar amb altres equips per mitjà de ssh), però no el servidor, i per tant, hem d’instal·lar el paquet “openssh-server” en aquells equips on volem acceptar connexions d’altres ordinadors (els servidors).

Logo d'OpenSSH

A l’hora d’identificar-nos en el servidor, ssh preveu dos mètodes bàsics. El primer és el que hem vist fins ara: ens intentem connectar, i el servidor ens demana l’usuari i la contrasenya. El segon mètode és el que mostrarem en aquesta anotació: emprar l’infrastructura de clau pública i clau privada. Bàsicament, el que farem és, en el client, generar un parell de claus: una de privada, que ens quedarem per a nosaltres, i una altra de pública, que enviarem als equips als quals ens vulguem connectar per tal que puguin desxifrar el que els enviem. L’avantatge d’això és que, un cop el servidor accepti la nostra clau pública, no haurem d’entrar mai la contrasenya de l’usuari de connexió.

Per a generar el nostre parell de claus (pública + privada), hem d’executar la comanda següent des d’un terminal de l’ordinador client:

ssh-keygen

Si premem [Enter] a totes les preguntes que ens faci el programa, ens generarà dos fitxers en el propi equip client, tots dos en el directori /home/el_nostre_usuari/.ssh:

  • id_rsa: És la nostra clau privada. L’hem de deixar tal qual.
  • id_rsa.pub: És la clau pública. La passarem a l’equip que faci de servidor.

Ara, hem de copiar la nostra clau pública a l’ordinador que ens fa de servidor. Podem aprofitar el propi programa scp, executant des d’un terminal en l’equip client:

scp /home/el_nostre_usuari/.ssh/id_rsa.pub usuari_servidor@ip_servidor:id_rsa.pub

Aquesta comanda ens demanarà la paraula de pas de l’usuari del servidor (perquè encara no hi tenim acceptada la nostra clau). Aquesta ordre ens haurà deixat la nostra clau pública al directori /home/usuari_servidor. Per tal que el servidor accepti aquesta clau, només cal afegir el contingut de la clau pública al final del fitxer authorized_keys del servidor. O sigui que, en el servidor, i des d’un terminal, executem la comanda següent:

cd /home/usuari_servidor
cat id_rsa.pub >> .ssh/authorized_keys

I ja ho tenim. A partir d’ara, quan des de l’equip client utilitzem qualsevol programa que formi part del grup d’eines de ssh (com el scp, el sftp i alguna altra que veurem en anotacions futures), com a destí només caldrà posar “usuari_servidor@ip_servidor“, i en cap moment ens demanarà la seva contrasenya, perquè s’acceptarà automàticament. Per exemple, ens podrem connectar via sftp amb les comandes següents:

sftp://usuari_servidor@ip_servidor

En cap moment ens demanarà la contrasenya de l’usuari. És més, si el nom d’usuari del client i del servidor són el mateix, nomès caldrà posar “ip_servidor” (en el cas de sftp, serà “sftp://ip_servidor“).

En anotacions posteriors veurem altres coses que podem fer amb les eines del paquet ssh.

1 comment

    • Joan on 27 d'octubre de 2009 at 17:25

    Reply

    Moltes gràcies! Això és el que sempre m’havia portat de cul, ja que sempre em sortia aquell missatge de “no s’ha pogut verificar….”, al que responia amb tu “Entra de totes maneres”.

    Això que has escrit agilitza molt! Gràcies de nou 😀

Respon a Joan Cancel·la les respostes

Your email address will not be published.