Saltar la navegación

6.2.1. Configuración básica de SSH

En distribuciones Linux, para poder controlar un equipo remotamente vía SSH, tan solo se necesita instalar el software servidor "openssh-server". Para ello se ejecuta el comando:

apt-get install openssh-server.

opensshUna vez instalado, el servicio SSH queda a la espera de solicitudes de conexión en modo seguro por parte de equipos remotos. En muchas ocasiones es necesaria la modificación de la configuración que SSH establece por defecto en su servicio. Para ello, una vez instalado el servicio, dentro del directorio /etc/ssh, se pueden encontrar dos ficheros que no deben ser confundidos puesto que tienen nombres muy parecidos pero con una finalidad totalmente diferente:

  1. ssh_config Fichero de configuración que establece el comportamiento de la aplicación cliente SSH.

  2. sshd_config Fichero de configuración que establece el comportamiento del servicio SSH.

Cabe destacar que no solo son configurables los parámetros que aparecen en el fichero sshd_config. Existen otros parámetros que no están en dicho fichero y que toman unos valores concretos. Para ver la lista de todos los parámetros modificables, incluidos los del fichero, se usa el comando:

sshd -T | less

Por tanto, se puede usar este comando para ver las opciones de configuración que actualmente se están aplicando en el servicio SSH.

A continuación se muestra una tabla con algunas de las entradas más interesantes que permiten personalizar el servicio SSH:

Parámetros más significativos del fichero de configuración del servidor
Directiva de configuración Significado
Port Establece el puerto por el que escucha el servicio SSH. Por defecto es el TCP/22, pero se puede modificar.
ListenAddress Establece las direcciones IP de la máquina a través de las cuales se escucharan solicitudes de conexión al servicio SSH. Por defecto es cualquier dirección IP.
LogLevel Establece el nivel de verbosidad, es decir, la cantidad de información que va a quedar registrada sobre cada conexión SSH. Su valor puede ser "quiet, fatal, error, info, verbose, debug, debug1, debug2, y debug3", siendo verbose el valor por defecto.
PermitRootLogin A través de este parámetro se establece si queremos que usando una cuenta de root se puede o no establecer una conexión remota vía SSH.
LoginGraceTime Establece el tiempo que tiene el usuario para llevar a cabo una autenticación correcta. Con un valor 0, el tiempo será indefinido.
PasswordAuthentication Este parámetro permite indicar si se quiere o no que un usuario se conecte al servicio SSH usando autenticación por password. Para que así sea, es necesario establecer su valor a yes. Si se quiere que solo se puedan establecer conexiones usando criptografía asimétrica (clave pública), es necesario establecer su valor a no.
ClientAliveInterval Mediante este parámetro se indica al servicio SSH la frecuencia con la que el cliente SSH tiene que dar "señales de vida" para considerar que la conexión está activa.
ClientAliveCountMax Este parámetro permite establecer el número de intentos de conexión que hará el servidor SSH si ha superado el periodo de tiempo establecido por el parámetro ClientAliveInterval sin recibir ninguna "señal de  vida" del equipo cliente.

AllowUsersDenyUsersAllowGroupsDenyGroups

A través de estos parámetros se permite decidir qué usuarios o grupos de usuarios podrán establecer una conexión remota SSH.

Una vez personalizado el servicio SSH, para que surtan efecto las modificaciones llevadas a cabo, es necesario reiniciar el servicio a través del comando:

/etc/init.d/ssh restart.

Una vez reiniciado, desde un equipo cliente se podrá directamente ejecutar un comando o se podrá iniciar una sesión remota. En ambos casos es necesario la autenticación, o bien mediante la introducción de la password del usuario remoto bajo el cual queremos ejecutar los comandos, o bien de manera desatendida mediante el uso de claves públicas. Para el primer caso, se muestra a continuación la sintaxis del comando que debe usarse:

ssh usuarioRemoto@IPServidorSSH Comando

En este caso, el comando a ejecutar debe estar encerrado entre comillas simples. Esta opción es muy útil cuando solo se quiere ejecutar un comando en el equipo remoto. Sin embargo, si se quiere llevar a cabo la ejecución de múltiples comandos, es necesario la conexión al equipo remoto e interactuar con él. Esto último se puede realizar a través del comando:

ssh usuarioRemoto@IPServidorSSH

Otra forma de llevar a cabo la conexión es mediante el comando:

ssh -l usuarioRemoto IPServidorSSH

Hay distribuciones Linux, como por ejemplo Ubuntu, en la que la cuenta de usuario root no tiene habilitada la password, y por tanto, no sería posible la conexión al servicio SSH por root, salvo que se habilite su password.

Reflexiona

¿Crees que sería recomendable tener habilitado el acceso al servicio ssh a través de la cuenta de usuario root?

Ejercicio Resuelto

Establece los parámetros de configuración adecuados para usar el servicio SSH mediante autenticación por password, para que no sea posible acceder desde la cuenta del usuario root, que el nivel de verbosidad para el registro de información en los log sea debug y el puerto de escucha sea el 22.