Hace 5 años

Conexión remota segura con SSH

SSH (Secure SHell) que traducido sería Interprete de comandos seguro, es un protocolo de comunicación encriptado para controlar un ordenador de forma remota a través de una terminal en la linea de comandos. El protocolo SSH nos permite usar un ordenador que puede estar conectado a la misma red o en cualquier parte del mundo a través de Internet, como si fuese el nuestro. Es posible ver todo el contenido del disco duro, transferir archivos de un ordenador a otro, y lo más interesante es que podemos ejecutar los programas instalados en el otro ordenador, viéndolo de forma gráfica en el nuestro.

Actualizado el 21-1-2013

Sobre el protocolo y su configuración hay muchos manuales en Internet, explicados con todo detalle. Así pues mi intención no es repetir, sino explicar como me conecto a otro ordenador con linux sin configuraciones y de la forma más sencilla.

El cliente SSH viene instalado por defecto en todas las distros, aunque solo nos hace falta instalar el servidor SSH, también instalo, la lista negra de claves predeterminadas RSA y DSA.

sudo apt-get install openssh-client openssh-server openssh-blacklist openssh-blacklist-extra

El paquete OpenSSH es una versión libre del protocolo SSH, que incluye las siguientes herramientas:

ssh: permite el acceso remoto a otra máquina.
sshd: servidor demonio SSH sshd.
scp: copia de archivos entre dos equipos.
sftp: transferir archivos entre dos equipos.
ssh-keygen: inspecciona y genera claves RSA y DSA, para la autentificación del usuario.
ssh-agent y ssh-add: autenticarse facilmente, manteniendo las claves listas para no tener que volver a introducir la frase de acceso cada vez que utilice la clave.
ssh-keyscan: escanea una lista de clientes y recolecta sus claves públicas.

Para acceder remotamente a otro ordenador con linux, solo nos hace falta la Terminal, sin embargo también podemos usar el navegador de archivos Nautilus.

Desde la Terminal

ssh -X usuario@ip

-X
Modo gráfico, opcional.
usuario
Nombre de usuario, del ordenador remoto.
ip
Dirección del ordenador remoto.

Para ejecutar programas gráficos ha de hacerse con la opción -X, que es opcional. La ip ha de ser la que tiene asignada el ordenador remoto, si está dentro de la red interna será como en el ejemplo 192.168.1.XX, esta ip la podemos ver en el icono de red del panel superior, en Información de la conexión. Si el ordenador remoto está fuera de nuestra red, la ip será la que tenga asignada en Internet. Para saber cual es, tenemos dos opciones, o con un complemento del navegador de internet o con web’s donde nos digan ¿Cual es mi IP?.

Tras introducir la contraseña se realizará la conexión, y será como si estuviésemos realmente delante del ordenador remoto. Al usar la opción -X además de poder usar los Comando de linux, sino que también podremos ejecutar cualquier programa gráfico como por ejemplo el navegador de archivos nautilus o el de internet firefox. El programa será ejecutado en el ordenador remoto, pero la parte gráfica se verá en el nuestro. La conexión la podremos cerrar escribiendo el comando exit o quit. Un detalle importante es que si el ordenador remoto está en Internet hemos de tener el puerto 22 o el que queramos usar abierto en el Router remoto.

Terminal

Desde el navegador de archivos

Usar el navegador de archivos es muy práctico porque nos permite explorar, transferir, borrar, modificar, … datos entre nuestro ordenador y el ordenador remoto, como si fuese una carpeta más de las nuestras. En la imagen podéis ver además que suelo poner las dos carpetas de trabajo a la vez, usando la opción del menú Ver/Panel adicional o con el atajo de teclado F3.
Nautilus

La conexión la podemos hacer de dos maneras, en la primera opción sería ir al menú Ir/Lugar… y poner lo siguiente

sftp://usuario@ip

La otra opción consiste en ir a Archivo/Conectar con el servidor y rellenar los datos. Primero hay que elegir el tipo de conexión SSH, en Servidor ponemos la ip y ya solo falta poner el nombre de usuario en minúsculas y la contraseña. En carpeta podemos poner la ruta a dónde ir directamente, o dejarlo como está y elegirla después. Si usamos la opción Recordar esta contraseña, podremos tenerlo como un marcador en el panel izquierdo, para futuras conexiones. Aunque no tiene que ver para este caso si el tipo de conexión elegimos ftp (con login) podemos conectarnos a un servidor FTP como el de un hosting.

Conectar con el servidor

Manteniendo viva la conexión y Acelerando SSH

Tras un rato de inactividad, la conexión será automáticamente desconectada. Podemos evitarlo añadiendo ServerAliveInterval, el numero es la frecuencia en segundos con la que mantendrá fresca la conexión. El resto de lineas hacen que se necesiten menos recursos por parte de la CPU.

sudo gedit /etc/ssh/ssh_config

Añadir al final

ServerAliveInterval 120
Ciphers arcfour,blowfish-cbc
Compression yes
AddressFamily inet
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p

Que hacemos si nos da error de conexión

Al ser un protocolo seguro se guardan las claves de la conexión en nuestro ordenador y en el ordenador remoto. Si por cualquier motivo hay algo que cambia en la conexión, como puede ser la ip, la conexión la dará por insegura. En la imagen se puede ver un ejemplo con el mensaje de error de conexión, con él nos pregunta si queremos realizar la conexión igualmente. Si se diera el caso que aún aceptando, no nos realizase la conexión, se podría intentar borrando la carpeta .ssh, y volver a intentar la conexión. La carpeta .ssh al tener el punto delante significa que está oculta y al ser una carpeta de configuración se encuentra en la carpeta personal, siguiendo mi ejemplo en /home/jhosue.

Error en la terminal

Podemos hacer visibles todas la carpetas de configuración de los programas en el menú Ver/Mostrar los archivos ocultos o en su defecto con el atajo de teclado CTRL+h.

Más información

Software libre
914

Dame tu opinión

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>