Hace un tiempo escribí un post sobre cómo instalar y configurar un servidor SSH. Tal vez sea el momento de ver alguna de las cosas que se pueden hacer una vez que se dispone de dicho servidor. Podéis encontrar la lista completa en el artículo sobre SSH de la Wikipedia:

  1. Obtención de una shell remota: La primera funcionalidad que se nos viene a la mente al pensar en SSH es la de poder obtener una shell en un ordenador remoto. Para ello, hay que utilizar el siguiente comando:

    abian@client:~$ ssh abian@127.0.0.1
    abian@127.0.0.1’s password:

    Una vez que se teclea el password ya estoy trabajando en la máquina remota. Esta utilidad es perfecta para modificar archivos de configuración, reiniciar servicios, revisar logs, etc. Para salir de la shell sólo hay que utilizar el comando logout o exit.

  2. Ejecución de un comando en una máquina remota:

    abian@client:~$ ssh abian@127.0.0.1 netstat -tupan
    abian@127.0.0.1’s password:

    Esta utilidad viene muy bien para ejecutar un comando aislado sin necesidad de obtener la shell.

  3. Copia de ficheros utilizando SCP:

    abian@client:~$ scp /home/abian/test.txt abian@127.0.0.1:/home/abian/probando/
    abian@127.0.0.1’s password:

    Tal vez no parezca muy potente pero si se utiliza la opción ‘-r’ para copiar directorios puede ser la solución definitiva para montar un sistema de backups casero a un servidor remoto:

    abian@client:~$ scp -r /home/abian/motivacionales_4chann/ abian@server:/home/abian/
    abian@127.0.0.1’s password:

  4. Acceso al entorno gráfico remoto: Utilizando la directiva de configuración del servidor ssh de “X11Forwarding yes” se pueden ejecutar aplicaciones que utilicen el entorno gráfico como si estuviéramos sentados delante del monitor del equipo remoto. Si nuestra red no es muy rápida, tal vez sea mejor utilizar soluciones como el servidor NX que funciona bastante bien.
  5. Montar un sistema de ficheros remoto: Se trata de algo parecido a la utilización de NFS para montar un directorio remoto pero en este caso toda la información se tunela utilizando ssh y no hay que instalar ningún servidor extra. Por ejemplo, se puede utilizar la aplicación “connect to server” para montar un directorio concreto:

    Ejemplo de conexión al servidor utilizando ssh

    mount ssh file system

¿Algunas consideraciones extras?

  • Cada vez que nos conectamos a un servidor ssh por primera vez nos pide confirmación sobre la identidad de dicho servidor:

    abian@client:~$ ssh abian@127.0.0.1
    The authenticity of host ‘127.0.0.1 (127.0.0.1)’ can’t be established.
    RSA key fingerprint is d5:0a:28:__:a3:fe:__:53:ba:87:xx:9a:ce:fb:9c:d6.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added ‘127.0.0.1’ (RSA) to the list of known hosts.
    abian@127.0.0.1’s password:

    Una buena política de seguridad nos exigiría comprobar que realmente dicho fingerprint se corresponde con el verdadero. Una vez que lo hemos comprobado, aceptamos la conexión y se crea una entrada en el archivo $HOME/.ssh/known_hosts y no nos volverá a pedir la confirmación más. Sin embargo, si algún atacante mal intencionado intenta hacernos un man-in-the-middle de toda la vida, el comando ssh nos dirá que el fingerprint de la clave ha cambiado y que no se fía de la conexión.

    No siempre son los atacantes mal intencionados los que nos impiden conectarnos por ssh, si se produce una actualización en el paquete sshd de nuestra distribución, se generarán nuevas claves y los fingerprints cambiarán. Habrá que ir al archivo known_hosts y borrar la línea correspondiente al fingerprint antiguo para poder continuar.

  • Es necesario recordar que el puerto por defecto del servidor ssh es el 22 pero que se puede ejecutar en cualquier otro puerto (el 443 es un gran candidato). Para utilizar los comando anteriores apuntando a cualquier otro puerto hay que utilizar el parámetro ‘-p’ para ssh y ‘-P’ para scp.

Espero que os haya gustado el post. Un saludo