Dentro de las posibilidades de administración y uso de Linux, las sesiones remotas es la más usada por todos los expertos y profesionales. Permiten mantener equipos y servidores desde cualquier parte del mundo. En el ámbito doméstico te puede ayudar a administrar de modo fácil y cómodo todos los equipos de tu casa. Además las posibilidades son infinitas, veremos algunos ejemplos para sacarle partido en este tutorial.
Las conexiones de consola remota se remontan a los orígenes de los ordenadores, para esa época las máquinas eran tan caras que permitir el uso simultáneo y remoto a varios usuarios era prioritário. Siendo Linux descendiente directo de UNIX, el SO de las revoluciones informáticas, es normal que herede todas estas utilidades. En este caso usaremos el servidor y cliente ssh, o secure shell. El programa servidor se ejecuta en el equipo que se quiere controlar, estará escuchando peticiones de conexión nuevas y ejecutará los comandos solicitados.
Además cifra el canal de datos completamente, para que nadie pueda hackear la conexión. Para poder conectarse necesitaremos el cliente ssh que se ejecuta en el ordenador que tendremos en nuestras manos, y nos dará acceso, a través de la red, a todos los recursos del equipo remoto.
Comenzamos instalando el servidor ssh
Para empezar es necesario instalar el servidor ssh en el equipo a controlar, en el caso de Ubuntu solo necesitamos instalar openssh-server. Si lo quieres instalar desde la consola solo introduce:
yo@SERVIDOR:~$ sudo apt-get install openssh-server
Luego escribe la contraseña de usuario y acepta las dependencias. No es necesario que escribas todo lo que aquí aparece a mano, lo más fácil es seleccionarlo, copiarlo y en la consola usar la combinación de teclas SHIFT-INSERT.
No es necesario configurar nada más en este equipo. Para asegurarse de que el servicio se inicia correctamente, usaremos:
yo@SERVIDOR:~$ sudo service ssh start
Esto fuerza a iniciar el programa, si ya está en marcha no hace más que mostrarlo en la pantalla. Para ilustrar el ejemplo, llamaremos al este equipo SERVER. Necesitaremos saber la IP de este equipo para hacer las conexiones desde los equipos remotos. Con este comando verás las IP asignadas a cada conexión de red de tu equipo. Si tienes varias conexiones (algo no muy común) selecciona la que corresponda:
yo@SERVIDOR:~$ ip addr show | grep inet | grep -v inet6 | grep -v host
inet 192.168.1.2/23 brd 192.168.1.255 scope global eth0
Explicación: ip administra conexiones de red, en este caso pedimos que muestre (show) las direciones (addr), luego filtramos (grep) solo las direciones ip (inet) y excluimos las ipv6 (inet6) y la direción de loopback (host). Si no entiendes lo que se hace con este comando no te desesperes, lo explicaré en próximos tutoriales. La dirección IP es lo marcado en rojo. No debiera diferir mucho entre distribuciones de Linux.
Instalación del cliente en los otros PC
Ahora, en cada PC con el que quieras acceder al servidor instalarías el cliente. En la consola se ejecutaría:
harmaniaco@CLIENTE:~$ sudo apt-get install openssh-client
Otra vez, deberás escribir la contraseña de usuario, y aceptar las dependencias.
A alguno de estos equipos le llamaremos CLIENTE (Sí, cierto, no soy muy original, pero no negaréis que soy claro..)
Ahora un poco de magia. Desde el equipo cliente vamos a conectar al servidor. Para ello necesitamos conocer la IP del servidor, como hemos visto antes.
Con el comando ssh se inicia la conexión con el servidor, por defecto con el nombre de usuario que ejecuta el comando. Si antes de la IP del servidor escribimos el nombre de usuario seguido del símbolo @ podemos iniciar sesión como un usuario válido en el servidor, pues casi seguro que no coinciden en ambos ordenadores los usuarios habilitados. Como ejemplo, pongamos que en SERVIDOR tenemos los usuarios mama, papa y yo. En CLIENTE tenemos hardmaniaco.
En este caso no podemos iniciar sesión en SERVIDOR como hardmaniaco ya que este no conoce a ningún usuario llamado así. Deberemos usar alguna cuenta registrada en SERVIDOR, como por ejemplo yo. El comando sería:
hardmaniaco@CLIENTE:~$ ssh yo@IP-SERVIDOR
la primera vez que se ejecute el comando creará un para de claves que se enviarán entre los equipos y cifrará la conexión. Además guardará esa clave en tu carpeta de usuario (en el PC CLIENTE), por eso pedirá confirmación:
hardmaniaco@CLIENTE:~$ ssh yo@SERVIDOR
The authenticity of host 'SERVIDOR (192.168.1.1)' can't be established.
ECDSA key fingerprint is ed:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
Are you sure you want to continue connecting (yes/no)?
escribe yes o simplemente y y presiona ENTER
Warning: Permanently added 'SERVIDOR,192.168.1.1' (ECDSA) to the list of known hosts.
yo@SERVIDOR's password:
Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic x86_64)
.
* Documentation: https://help.ubuntu.com/
.
Last login: Tue Nov 15 21:46:16 2011 from SERVIDOR.local.lan
yo@SERVIDOR:~$
Fíjate bien, la línea de estado, o PROMPT, ha cambiado (yo@SERVIDOR:~$), ahora muestra el usuario yo en la máquina SERVIDOR. COneste comando hemos iniciado una conexión de consola en el SERVIDOR. Ahora si hacemos un listado de ficheros veremos lo que SERVIDOR tiene, como si estubiésemos enfrente de él. Con esto podemos editar, ejecutar, etc. sin movernos.
Como reiniciar el PC desde el otro equipo?
Si alguna actualización pide reiniciar el equipo, ejecuta:
yo@SERVIDOR:~$ sudo shutdown -r now
Escribe la contraseña de usuario y presiona ENTER. La consola se desconectará y en unos instantes el PC estará reiniciado. Luego vuelve a iniciar sesion como antes, (ssh yo@SERVIDOR) y continúa! Puede reproducir música en el equipo del salón desde el portátil. Usa mplayer o mp3blaster. Por ejemplo:
yo@SERVIFOR:~$ mplayer Música/ACDC/thunderstruck.mp3
haría sonar la canción guardada en el mismo servidor. Para reproducir un archivo del CLIENTE en SERVIDOR tenemos que enviarlo a través de la conexión ssh. Sería algo así:
hardmaniaco@CLIENTE:~$ cat dir/fichero_audio.mp3 | ssh yo@SERVIDOR "mplayer -"
Qué hacemos ahí? pues cat xx muestra lo que tiene el fichero, en este caso lo muestra al cliente ssh que lo envía a través de consola (el símobolo | encadena los flujos de los comandos) y luego ssh ejecuta el reproductor mplayer pidendo que lea lo que recibe por consola (símbolo –). OJO! ese comando lo ejecutamos desde CLIENTE, usando una consola sin logearnos en SERVIDOR, por fíjate en el PROMPT! Fíjate también que si ejecutamos ssh con un comando a continuación, se abrirá sesión en el servidor, pedirá pass de acceso y ejecutará el comando directamente. Si el comando está compuesto de varias palabras se necesita encerrarlo entre comillas («»)
Aplicaciones gráficas con ventana
¿Qué hay de las aplicaciones gŕaficas, con ventana?
En ese caso tenemos que hacer que nuestra máquina envíe la posición del ratón, los clicks, etc al servidor, y que el servidor muestre en pantalla todos los elementos gráficos de la aplicación… en resumen, añadimos el parámetro -X al comando ssh y ya está!. Por ejemplo, ejecutamos GIMP remoto
hardmaniaco@CLIENTE:~$ ssh -X yo@SERVIDOR gimp
Et voila, una imagen que lo muestra es:
Una última nota; si quereis hacer conexiones entre PC a través de internet necesitareis configurar el router tal y como se hace con el eMule.
Para no alargar demasiado este tutorial lo dejaré ahi. Si tenéis alguna duda preguntad, si está en mis manos os ayudaré o ampliaré con otros tutoriales. Os animo a que lo probéis en vuestro PC!