¿Cómo Configurar un Servidor SSH?

Aprendamos a configurar un servidor SSH tanto a través del archivo de configuración del servidor, como desde la línea de comandos.

Después de instalar el servidor SSH, es importante destacar que existen varios parámetros que permiten definir su comportamiento bajo condiciones específicas.

Por ejemplo, como mantener el número de conexiones inactivas después de un cierto límite de tiempo, técnicas de autenticación o el número de bits que debe contener la clave del servidor.

En este artículo veremos cómo se puede realizar la configuración de estos parámetros.

Algunas de estas opciones están disponibles cuando se edita el archivo de configuración a nivel de servidor o de usuario, mientras que otras están disponibles cuando se compila.

Iniciar el servidor SSH

Normalmente, un servidor SSH se ejecuta mientras la computadora host se inicia y se deja funcionando como un demonio. Alternativamente, también es posible invocar el servidor manualmente.

Esto es útil, cuando se desea depurar el servidor SSH para experimentar con sus posibles opciones de configuración. En la mayoría de los casos, solamente se ejecuta un servidor SSH en una computadora.

A pesar de que una PC es capaz de manejar múltiples conexiones (multiconnections) SSH, uno por cada conexión entrante. Si quieres iniciar varios servidores SSH, vas a tener que ejecutar dos copias del demonio SSH escuchando en diferentes puertos TCP.

El servidor SSH se inicia simplemente escribiendo el comando sshd .

Descripción general de la configuración

Como se mencionó al comienzo, el comportamiento del servidor sshd se puede administrar en la compilación, a nivel de servidor o a nivel de usuario.

En particular:

  • La configuración en tiempo de compilación ocurre cuando sshd se compila en el servidor. Por ejemplo, se puede construir un servidor con o sin soporte de autenticación rhosts.
  • La configuración a nivel de servidor, la realiza un administrador del sistema y se aplica a una instancia en ejecución de sshd. Por ejemplo, un administrador puede denegar el acceso SSH a todos los hosts en un determinado dominio o hacer que el servidor escuche en un puerto en particular. La configuración a nivel de servidor también puede depender de la configuración en tiempo de compilación. Por ejemplo, las opciones de autenticación basadas en el host de un servidor funcionan solo si el servidor se compiló con soporte para la autenticación basada en host. De lo contrario, la configuración no tiene efecto.
  • La configuración a nivel de usuario, se realiza dirigida por parte del propio usuario final. Por ejemplo, los usuarios pueden permitir o denegar el acceso a sus cuentas desde ciertos hosts, anulando la configuración a nivel de servidor.

Supongamos que un usuario A, desde una máquina cliente.ejemplo.com inicia un cliente SSH. Entonces el comportamiento del cliente también está determinado por varios factores (de manera similar a lo que sucede con el servidor), a saber:

  • El archivo de configuración del cliente a nivel de máquina en cliente.ejemplo.com
  • El archivo de configuración del cliente del usuario A
  • Las opciones de línea de comandos utilizadas por A al invocar al cliente

Si el servidor SSH se ejecute como servidor.ejemplo.com acepta la conexión de A a la cuenta B. El comportamiento del servidor estará determinado por las opciones de compilación que se usaron cuando se creó el archivo de configuración del servidor a nivel de máquina su servidor.ejemplo.com, las opciones de la línea de comandos que se usaron cuando se inició el servidor SSH y el archivo de configuraciones personales del servidor de B (por ejemplo, el archivo de Llaves_de_Autorización).

Si tenemos en cuenta, los tres niveles posibles de configuración del servidor y los diferentes parámetros que pueden cambiar la configuración, las cosas pueden complicarse.

En particular, debes tener en cuenta que las diferentes configuraciones pueden funcionar al unísono o anularse entre sí. Por ejemplo, el usuario B puede configurar el servidor.ejemplo.com propio, para aceptar conexiones del cliente.ejemplo.com , mientras que el administrador del sistema del servidor servidor.ejemplo.com puede configurarlo para que las rechace.

Por lo tanto, los administradores no solo deben entender cómo configurar el servidor, sino también cómo sus elecciones pueden afectar a otro tipos de configuraciones.

A continuación, veremos información sobre la configuración del lado del servidor por medio de archivos y línea de comandos, dejando de lado las que se encuentran en la fase de compilación.

archivo de configuración del servidor

El archivo de configuración del servidor OpenSSH normalmente se encuentra en la ruta /etc/ssh/sshd_config (en Windows %ProgramData%\ssh\sshd_config).

El archivo contiene palabras clave o también llamadas variables de configuración y sus valores. Las palabras clave no distinguen entre mayúsculas, ni minúsculas: de hecho, la palabra clave Port o port se tratan de forma idéntica.

Por ejemplo, para configurar el puerto TCP en el que escuchará el servidor, en el archivo de configuración del servidor SSH debes editar la línea que contiene la palabra clavev Port seguida del valor numérico del puerto, por ejemplo: Port 1050.

Es posible, encontrar numerosas líneas precedidas por el carácter # en el archivo, que indican que actualmente están comentadas y por lo tanto, son reglas que no están consideradas por el servidor.

Los archivos de configuración del servidor pueden ser varios y el administrador puede decidir qué archivo cargar según sus necesidades. Para usar un archivo de configuración que no sea el predeterminado, debes ejecutar la declaración de línea de comando:

$ sshd -f /usr/local/ssh/NombreFichero_Configuracion

Proporcionando el nombre del archivo alternativo como argumento. Un aspecto importante a subrayar cuando se habla de configuraciones de archivos se refiere a los permisos de los usuarios.

El servidor OpenSSH espera encontrar la clave pública del cliente SSH dentro del archivo ~/.ssh/authorized_keys. Esa ruta se puede cambiar usando la palabra clave AuthorizedKeysFile en el archivo del servidor /etc/ssh/sshd_config seguida de la nueva ruta.

Los nombres de archivo pueden ser absolutos o relativos al directorio de inicio del usuario y la ruta puede contener algunos símbolos especiales, como %h para indicar el directorio de inicio del usuario, %u para el nombre de usuario o %% para el signo de porcentaje. Así que con esta línea dentro del archivo del servidor /etc/ssh/sshd_config:

AuthorizedKeysFile /usr/local/access/%u

El usuario A se autenticará y el archivo de autorización del usuario se copiará en el directorio /usr/local/access/A.

Después de editar un archivo de configuración del servidor, ¿Cómo podemos saber que funcionará y tendrá el efecto deseado?

Bien, la respuesta a esta pregunta es simplemente iniciar el servidor OpenSSH con la opción -t (test) y si no se encuentran problemas, el servidor devolverá un estado de salida de cero para indicar una operación exitosa.

De lo contrario, los mensajes de error se imprimirán como error estándar y el servidor saldrá con un estado nulo.

Configuración del servidor a través de la línea de comandos

Otra posibilidad de configuración, puede ejecutarse al invocar el servidor vía línea de comandos. Por ejemplo, el valor del puerto se puede especificar directamente desde la línea de comando con la opción -p:

$ sshd -p 1080

Las opciones de la línea de comandos anulan la configuración del archivo de configuración. Por lo tanto, si el archivo de configuración enumera el puerto 1030 pero el servidor se invoca con -p 1080. El puerto que se utilizará será el 1080.


Conclusiones Finales

Debes tener en cuenta que los servidores SSH modernos se desarrollan activamente y sus configuraciones (palabras clave, etc.) están constantemente sujetas a cambios, además de ser numerosas.

Por lo tanto, es bueno mantenerse informado leyendo la documentación y estudiarla según tus necesidades.

En el siguiente artículo, veremos -algo- sobre la configuración del lado del cliente.

Relacionados