Post

Configuración de SSH

Cliente

Existe el fichero /etc/ssh/ssh_config en el que se especifican los parámetros de configuración generales que van a utilizar por defecto todos los clientes ssh que se ejecuten en esa máquina.

Los posibles parámetros que podemos definir en ese fichero se detallan en la página 5 del manual de ssh_config.

SendEnv LANG LC_*

Mediante este parámetro se define en el equipo remoto los parámetros de localización del cliente, siempre que estos estén definidos allí. Por ejemplo, supongamos que la variable local sea LANG=es.ES.UTF-8, seguirá siendo en el equipo remoto siempre que exista, en caso contrario se pondrá la localización por defecto del sistema:

1
2
env |grep LANG
env |grep LANG

HashKnownHosts yes|no

Para ofuscar mediante un hash la IP o el nombre de los servidores de los que almacenamos las claves públicas en el fichero

1
~/.ssh/known_hosts

GSSAPIAuthentication yes|no

Para habilitar este método de autenticación, en sistemas Debian viene habilitado, aunque sólo es necesario en los casos en los que se vaya a usar este método de autenticación.

Carácter de escape

En algunas ocasiones podemos tener problemas con nuestra conexión ssh y que la shell remota no responda a las instrucciones que mandamos, en esos casos siempre se podrá cerrar la conexión mediante el carácter de escape que hayamos definido en nuestro cliente ssh, este caracter por defecto es “~”:

1
EscapeChar ~

Para ejecutarlo escribiríamos la secuencia ~.

ForwardAgent, ForwardX11

Explicados en la sección específica de forwarding

GlobalKnownHostsFile fichero

Permite la utilización de un fichero known_hosts para todos los usuarios de un equipo.

NumberOfPasswordPrompts

Número de intentos de acceso con contraseña. Por defecto es 3

StrictHostKeyChecking yes|ask|no

Parámetro muy importante, utiliza para la gestión de las claves públicas de los equipos remotos. La opción por defecto es “ask”, de manera que si no se ha almacenado previamente la clave pública se pregunta qué hacer. En el caso de ponerla en “yes”, se rechazará una conexión si no existe previamente la clave pública y en caso de optar por la opción “no”, no se hará ninguna verificación.

UserKnownHostsFile fichero

Fichero known_hosts de usuario, por defecto

1
~/.ssh/known_hosts

Configuración por usuario

Salvo algunos parámetros generales, es poco probable que la mayoría de los parámetros que se pueden definir para el cliente ssh sean útiles para todos los usuarios de un equipo, es mucho más habitual que un usuario defina un fichero de configuración con sus propios parámetros. Este fichero es ~/.ssh/config y los parámetros aquí definidos prevalecen sobre los generales.

Se pueden definir parámetros para todos los equipos remotos, pero es también muy útil agruparlos con el parámetro Host como en el siguiente ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
GSSAPIAuthentication no

Host 192.168.1.1
     User root
     Port 2022
     ForwardAgent yes
     Identityfile ~/.ssh/id_ecdsa
     StrictHostKeyChecking yes

Host *.example.com
     StrictHostKeyChecking no
     UserKnownHostsFile=/dev/null
     LogLevel QUIET

Utilizar parámetros directamente

Independientemente de los parámetros que estén definidos en cualquiera de las opciones anteriores, también es posible utilizar parámetros de forma explícita en la propia línea de comandos, pasándolos mediante el modificador -o, por ejemplo:

1
ssh -o "ForwardAgent yes" alejandroalsa@10.10.10.10

Servidor

Tal como vimos en la instalación y configuración elemental del servidor ssh, podemos ver las opciones de configuración que se aplican a nuestro servidor mediante:

1
sshd -T |less

Vamos a comentar algunas que pueden ser interesantes porque se modifican con cierta frecuencia.

Port 22

Puerto tcp en el qu va a escuchar peticiones el servidor ssh, por defecto es el 22/tcp, pero puede cambiarse sin problema.

AddressFamily any|inet|inet6

El protocolo o protocolos de red a utilizar, puede ser inet(IPv4), inet6 (IPv6) o any(ambos) que es la opción por defecto.

ListenAddress

Si queremos especificar que se permitan conexiones sólo a través de una dirección IP concreta (IPv4/IPv6).

logingracetime, maxauthtries y maxsessions

Para especificar el tiempo que se espera para que el usuario se acceda con éxito al sistema, el número máximo de veces que puede introducir la contraseña y el número máximo de sesiones en la misma conexión.

loglevel y syslogfacility

Para controlar el nivel de detalle que mostrar en los logs del sistema, así como la “facility” a utilizar.

hostkey

Fichero o ficheros que especifican la clave o claves privadas a utilizar por el servidor.

This post is licensed under CC BY 4.0 by the author.