En aquesta segona entrada anem a fer segura la connexió entre client i servidor. Ara que ja hem aconseguit fer connexió ‘a pèl’ i comprovar que funciona be, ens toca configurar la seguretat. Per a encriptar la informació que enviem s’utilitza SSH ja que rsync no té encara opció de fer-ho (però si opció d’ajudar-se amb ssh).
El que fa rsync amb ssh és connectar les dues màquines pel protocol segur (amb usuari/password) i una vegada establida la connexió és quan s’executa l’odre del rsync, que demanarà el password de l’usuari del rsync. Ací ja venen diversos errors com confondre usuaris o passwords, que l’usuari que s’utilitza al ssh tinga accés a la carpeta del rsync al servidor,…..que si seguim aquesta configuració desapareixeran.
Com acabem de veure, realment posem en marxa dues aplicacions i les dues necessiten usuari/password, que no tenen perque coincidir els usuaris a les dues connexions (ni els passwords tampoc, clar).
Aleshores, per a començar tenim dos usuaris diferents: Un per a la connexió ssh, que serà un usuari del servidor, i l’altre l’usuari per a la connexió rsync, que estarà configurat a rsync (i no té perquè existir al sistema del servidor). Però recordem que el que volem és copiar els arxius i preservar els seus atributs, owners,… (el que significa executar rsync com a super usuari ja que el uid l’hem posat com a root). La forma més ràpida (i perillosa) és connectar-se per ssh com a root, amb el perill que comporta ‘deixar’ el password de root d’una màquina a un usuari d’una altra. L’altra forma és fer-ho ben fet: al servidor habilitar que el nostre usuari que utilitzarem per a ssh puga executar rsync amb drets de super usuari i sense que ens demane password (aquest últim requisit no és per gust sino perquè rsync no admet interacció amb sudo, l’apicació que utilitzarem).
Per supost anem a fer la segona opció! Primer anem a instal·lar l’aplicació sudo, que al debian no està i s’instal·la fent un #apt-get install sudo
i després anem a configurar per a que l’usuari que anem a utilitzar a ssh puga executar rsync com a super usuari sense que ens demane password. Exactament anem a indicar el que acabe d’escriure, solament podrà executar aquest programa com a super usuari sense que demane password, eixe i solament eixe. És més, si no es configura com a usuari sudoer (que no anem a fer-ho) no podrà executar ninguna aplicació més com a super usuari encara que siga demanant password. Insistixc molt per a que es veja que és molt més segur la segona opció que la primera. Ale va! a configurar:
#nano /etc/sudoers
i afegim al final aquesta línia:
user_ssh ALL= NOPASSWD:/usr/bin/rsync
- Explicació
- user_ssh: És l’usuari que utilitzarem per a fer login a ssh.
- ALL: indiquem que des de qualsevol màquina.
- NOPASSWD: indiquem que no fa falta introduïr password.
- /usr/bin/rsync: És la ruta on està l’executable rsync ( si és una altra ruta, es posa l’altra ruta).
Ara com ja ho tenim configurat anem a fer la còpia utilitzant ssh:
$rsync -avz --rsh 'ssh -l user_ssh' --rsync-path="sudo rsync" /ruta/oritge backup_user@servidor_destí::BACKUP
- En aquesta ordre hem introduït nous elements que explique ara mateix:
- –rsh ‘ssh -l user_ssh’: Indica que la remote shell serà ssh i que l’usuari per a ssh serà user_ssh.
- –rsync-path=”sudo rsync” aquesta opció s’utilitza per a indicar on està rsync si no està al seu lloc per defecte però es pot utilitzar per a fer el que nosaltres volem, indicant-li que el path és “sudo rsync”. Aleshores quan es faça la connexió ssh, rsync executarà l’odre sudo rsync com al usuari user_ssh (que ja hem indicat que no necessita password per a executar rsync), aconseguint dret de super usuari per a l’aplicació i poder mantindre els seus atributs, owners,…
Si ara el que volem és fer una connexió però a un port ssh diferent (podem observar que ara no utilitzem el port del rsync sino el del ssh), ho executem de la següent forma:
$rsync -avz --rsh 'ssh -p port -l user_ssh' --rsync-path="sudo rsync" /ruta/oritge backup_user@servidor_destí::BACKUP
El :: és correcte i també es pot canviar –rsh per -e, és la mateixa opció però amb el mètode abreviat
Per a finalitzar dir que al executar aquesta ordre primer demana el password del usuari ssh i després el del usuari rsync, si es passa la primera autenticació però no s’arriba a la segona es que hi ha un error amb l’usuari ssh, una vegada ja s’ha posat el password de l’usuari de rsync… ja el problema està a la teulada del rsync.
I ja està acabat el segon post sobre el tema, prompte el tercer! on vorem com fer que no ens demane passwords el rsync i poder posar al cron per a que s’execute automàticament