Product SiteDocumentation Site

9.2. Inici de sessió remot

És essencial que un administrador pugui connectar-se a un ordinador remotament. Els servidors, confinats al seu espai, rarament estan equipats amb teclats i monitors permanents, però estan connectats a la xarxa.

9.2.1. Inici de sessió remot segur: SSH

El protocol SSH (Secure SHell) va ser dissenyat amb la seguretat i la fiabilitat en ment. Les connexions que utilitzen SSH són segures: l'altra part està autenticada i tots els intercanvis de dades estan encriptats.
SSH també ofereix dos serveis de transferència de fitxers. scp és una eina de línia d'ordres que es pot utilitzar com cp, excepte que qualsevol camí a una altra màquina està prefixat amb el nom de la màquina, seguit de dos punts (“:”).
$ scp fitxer ordinador:/tmp/
sftp és una ordre interactiva, similar a ftp. En una sola sessió, sftp pot transferir diversos fitxers, i és possible manipular fitxers remots (suprimir, reanomenar, canviar permisos, etc.).
Debian utilitza OpenSSH, una versió lliure d'SSH mantinguda pel projecte OpenBSD (un sistema operatiu lliure basat en el nucli BSD, centrat en la seguretat) i bifurcació («fork») del programa SSH original desenvolupat per l'empresa SSH Communications Security Corp, de Finlàndia. Aquesta empresa inicialment va desenvolupar SSH com a programari lliure, però finalment va decidir continuar-ne el desenvolupament sota una llicència propietària. El projecte OpenBSD va crear llavors l'OpenSSH per mantenir una versió lliure de l'SSH.
L'OpenSSH està separat en dos paquets: la part del client està al paquet openssh-client, i el servidor està al paquet openssh-server. El metapaquet ssh depèn de les dues parts i facilita la instal·lació d'ambdues (apt install ssh), mentre que task-ssh-server, normalment escollit durant la instal·lació inicial, depèn només del paquet del servidor.

9.2.1.1. Autenticació basada en claus

Cada vegada que inicia una sessió amb SSH, el servidor remot demana una contrasenya per autenticar l'usuari. Això pot ser problemàtic si voleu automatitzar una connexió, o si utilitzeu una eina que requereix connexions freqüents sobre SSH. Per això SSH ofereix un sistema d'autenticació basat en claus.
L'usuari genera un parell de claus a la màquina client amb ssh-keygen -t rsa; la clau pública que genera s'emmagatzema a ~/.ssh/id_rsa.pub, mentre que la clau privada corresponent es desa a ~/.ssh/id_rsa. L'usuari pot llavors utilitzar ssh-copy-id servidor per afegir la seva clau pública al fitxer ~/.ssh/authorized_keys al servidor o, si l'accés SSH encara no s'ha activat, s'ha de demanar a l'administrador que afegeixi la clau manualment.
Si la clau privada no estava protegida amb una contrasenya (o «passphrase») en el moment de la seva creació, tots els inicis de sessió posteriors del servidor funcionaran sense contrasenya. En cas contrari, la clau privada ha de ser desencriptada cada vegada introduint la contrasenya. Afortunadament, ssh-agent ens permet mantenir les claus privades en memòria per no haver de tornar a introduir la contrasenya cada cop. Per a això, simplement utilitzeu ssh-add (una vegada per sessió de treball) sempre que la sessió ja estigui associada amb una instància funcional d' ssh-agent. Debian l'activa per defecte en sessions gràfiques, però això es pot desactivar canviant /etc/X11/Xsession.options i comentar use-ssh-agent. Per a una sessió de consola, es pot iniciar manualment l'agent amb eval $(ssh-agent)).

9.2.1.2. Autenticació basada en certificat

Les claus SSH no es poden protegir només amb una contrasenya (o no). Una característica sovint desconeguda és que també es poden signar mitjançant certificat, tant les claus del servidor com les del client. Aquesta aproximació comporta diversos avantatges. En lloc de mantenir un fitxer authorized_keys per cada usuari com s'ha descrit a la secció anterior, el servidor SSH es pot configurar per confiar en totes les claus de client signades amb el mateix certificat (vegeu també Secció 10.2.2, «Infraestructura de clau pública: easy-rsa») usant les directives TrustedUserCAKeys i HostCertificate a /etc/ssh/sshd.config.
TrustedUserCAKeys /etc/ssh/ssh_users_ca.pub

HostKey /etc/ssh/ssh_host_ecdsa_key
HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub
Recíprocament, els clients també es poden configurar per confiar en la clau de l'amfitrió signada per la mateixa autoritat, fent més fàcil mantenir el fitxer known_hosts (fins i tot a nivell de sistema via /etc/ssh/known_hosts).
@cert-authority *.falcot.com ssh-rsa AAAA[..]
Tots dos, tant la clau pública com l'autenticació de certificat es poden utilitzar simultàniament.

9.2.1.3. Usar aplicacions X11 remotes

El protocol SSH permet la redirecció de dades gràfiques (sessió “X11”, pel nom del sistema gràfic més estès a Unix); el servidor manté un canal dedicat per a aquestes dades. Específicament, un programa gràfic executat remotament es pot mostrar al servidor X.org de la pantalla local, i tota la sessió (entrada i pantalla) serà segura. Com que aquesta característica permet que les aplicacions remotes interfereixin amb el sistema local, no està habilitada per defecte. Podeu habilitar-la especificant X11Forwarding yes al fitxer de configuració del servidor (/etc/ssh/sshd_config). Finalment, l'usuari també ho ha de sol·licitar afegint l'opció -X a la línia d'ordres de l'ssh.

9.2.1.4. Creació de túnels encriptats amb reenviament de ports

Les opcions -R i -L permeten a ssh crear “túnels xifrats” entre dues màquines, redirigint de forma segura un port TCP local (vegeu la barra lateral TORNAR A LES BASES TCP/UDP) cap a una màquina remota o viceversa.
ssh -L 8000:servidor:25 intermediari estableix una sessió SSH amb la màquina intermediari i escolta pel port local 8000 (vegeu Figura 9.3, «Reenviament d'un port local amb SSH»). Per a qualsevol connexió establerta en aquest port, ssh iniciarà una connexió des de l'ordinador intermediari cap al port 25 del servidor, i unirà ambdues connexions.
ssh -R 8000:servidor:25 intermediari també estableix una sessió SSH amb la màquina intermediari, però és en aquest equip que ssh escolta pel port 8000 (vegeu Figura 9.4, «Reenviament d'un port local amb SSH»). Qualsevol connexió establerta en aquest port farà que ssh obri una connexió des de l'ordinador local cap al port 25 del servidor, i unirà ambdues connexions.
En tots dos casos es fan connexions al port 25 de l'equip servidor, que passen a través del túnel SSH establert entre la màquina local i la màquina intermediari. En el primer cas, l'entrada al túnel és el port local 8000, i les dades es mouen cap a la màquina intermediari abans de ser dirigida a l'equip servidor a la xarxa “pública”. En el segon cas, l'entrada i la sortida del túnel s'inverteixen; l'entrada és el port 8000 de la màquina intermediari, la sortida és a l'ordinador local, i les dades es dirigeixen a servidor. A la pràctica, el servidor sol ser la màquina local o l'intermediari. D'aquesta manera SSH assegura la connexió d'un extrem a l'altre.
Reenviament d'un port local amb SSH

Figura 9.3. Reenviament d'un port local amb SSH

Reenviament d'un port local amb SSH

Figura 9.4. Reenviament d'un port local amb SSH

9.2.2. Ús d'escriptoris gràfics remots

VNC (computació en xarxes virtuals o «Virtual Network Computing») permet l'accés remot a escriptoris gràfics.
Aquesta eina s'utilitza principalment per a l'assistència tècnica; l'administrador pot veure els errors als quals s'enfronta l'usuari i mostrar-li el curs correcte de l'acció sense haver d'estar al seu costat.
En primer lloc, l'usuari ha d'autoritzar compartir la seva sessió. L'entorn d'escriptori gràfic del GNOME inclou aquesta opció a través de ParàmetresCompartició (a diferència de versions anteriors de Debian, on l'usuari havia d'instal·lar i executar vino). Perquè això funcioni, el network-manager ha d'estar gestionant la xarxa utilitzada (per exemple, habiliteu el mode maaged per a dispositius gestionats per ifupdown a /etc/NetworkManager/NetworkManager.conf). El KDE Plasma encara requereix l'ús de krfb per permetre compartir una sessió existent sobre VNC. Per a altres entorns d'escriptori gràfics, les ordres x11vnc o tightvncserver (dels paquets Debian amb idèntic nom) o tigervncserver (tigervnc-standalone-server) tenen mateix propòsit i proveeixen el paquet virtual vnc-server; qualsevol d'ells el podeu deixar disponible per a l'usuari amb una entrada de menú o icona a l'escriptori.
Quan la sessió gràfica està disponible via VNC, l'administrador ha de connectar-se amb un client VNC. GNOME té vinagre i remmina per a això, mentre que el projecte del KDE proporciona krdc (en el menú KInternetClient d'escriptori remot). Hi ha altres clients VNC que utilitzen la línia de d'ordres, com xtightvncviewer del paquet Debian homònim o xtigervncviewer al paquet Debian tigervnc-viewer. Un cop connectat, l'administrador pot veure el que està passant, treballar a la màquina remotament i mostrar a l'usuari com procedir.