Cómo utilizar y configurar el archivo de configuración SSH en Linux

27 feb 2021 4 min di lettura
Cómo utilizar y configurar el archivo de configuración SSH en Linux
Indice dei contenuti

Introducción

Si se conecta regularmente a varios sistemas remotos a través de SSH a diario, encontrará que recordar todas las direcciones IP remotas, diferentes nombres de usuario, puertos no estándar y varios conmutadores de línea de comando es difícil, si no imposible.

Una opción sería crear un alias bash para cada conexión de servidor remoto. Sin embargo, existe otra solución mejor y más sencilla para este problema. OpenSSH le permite configurar un archivo de configuración por usuario donde puede almacenar diferentes opciones de SSH para cada máquina remota a la que se conecte.

Esta guía cubre los conceptos básicos del archivo de configuración del cliente SSH y explica algunas de las opciones de configuración más comunes.

Prerrequisitos

Supongamos que está ejecutando un sistema Linux o macOS con el cliente OpenSSH instalado.

Ubicación del archivo de configuración SSH

El archivo de configuración del lado del cliente de OpenSSH se llama config y se almacena en el .ssh en el directorio de inicio del usuario. El ~/.ssh se crea automáticamente cuando el usuario ejecuta el comando ssh por primera vez.

Si nunca ha utilizado el ssh, deberá crear el directorio con este comando:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

De forma predeterminada, es posible que el archivo de configuración SSH no exista, por lo que es posible que deba crearlo con el comando táctil:

touch ~/.ssh/config

Este archivo debe ser legible y escribible solo por el usuario y no debe ser accesible para otros:

chmod 600 ~/.ssh/config

Estructura y esquemas de archivos de configuración SSH

El archivo de configuración SSH tiene la siguiente estructura:

Host hostname1
 SSH_OPTION value
 SSH_OPTION value

 Host hostname2
 SSH_OPTION value

 Host *
 SSH_OPTION value

El contenido del archivo de configuración del cliente SSH está organizado en estrofas (secciones). Cada estrofa comienza con la Host y contiene opciones SSH específicas que se utilizan al establecer una conexión con el servidor SSH remoto.

No se requiere sangría, pero se recomienda ya que facilitará la lectura del archivo.

La Host puede contener una plantilla o una lista de plantillas separadas por espacios en blanco. Cada patrón puede contener cero o más caracteres no blancos o uno de los siguientes identificadores de patrón:

  • *: coincide con cero o más caracteres. Por ejemplo, Host * coincidirá con todos los hosts, mientras que 192.168.0.* con todos los hosts de la subred 192.168.0.0/24
  • ? - coincide exactamente con un personaje. Modelo de host Host 10.10.0.? coincidirá con todos los hosts en el rango 10.10.0.[0-9].
  • ! - al comienzo de un patrón se Host 10.10.0.*!10.10.0.5 Adaptarse a cualquier host en el 10.10.0.0/24 subred excepto 10.10.0.5.

El cliente SSH lee el archivo de configuración por estrofa y si más de un patrón coincide, las primeras opciones coincidentes de estrofa tienen prioridad. Por lo tanto, se deben proporcionar más declaraciones específicas de host y sustituciones más generales al final del archivo al principio del archivo.

Puede encontrar una lista completa de las opciones ssh disponibles escribiendo man ssh_config:

man ssh_config

O visitando la página del manual ssh_config.

El archivo de configuración SSH también es leído por otros programas como scp, sftp y rsync.

Ejemplo de archivo de configuración SSH básico

Ahora que hemos cubierto el archivo de configuración SSH básico, echemos un vistazo al siguiente ejemplo.

Por lo general, cuando se conecta a un servidor remoto a través de SSH, debe especificar el nombre de usuario, el nombre de host y el puerto remotos. Por ejemplo, para conectarse como un usuario llamado alice a un host llamado dev.example.it en el puerto 2322 desde la línea de comando, escriba:

ssh [email protected] -p 2322

Si prefiere conectarse al servidor usando las mismas opciones provistas en el comando anterior simplemente escribiendo ssh dev, deberá poner las siguientes líneas en su ~/.ssh/config, luego abra el archivo:

nano ~/.ssh/config
Host dev
 HostName dev.example.it
 User alice
 Port 2322

Ahora si escribe:

ssh dev

el cliente ssh leerá el archivo de configuración y uso de los datos de conexión especificados para el dev anfitrión.

Ejemplo de un archivo de configuración SSH compartido

Este ejemplo proporciona información más detallada sobre los modelos de host y la prioridad de las opciones.

Tomemos el siguiente archivo de ejemplo:

Host targaryen
 HostName 192.168.1.10
 User daenerys
 Port 7654
 IdentityFile ~/.ssh/targaryen.key

 Host tyrell
 HostName 192.168.10.20

 Host martell
 HostName 192.168.10.50

 Host *ell
 user oberyn

 Host *!martell
 LogLevel INFO

 Host *
 User root
 Compression yes

Si escribe ssh targaryen el cliente ssh leerá el archivo y aplicará las opciones de la primera coincidencia, que es Host targaryen. Luego revisará las siguientes habitaciones una por una para encontrar el modelo correspondiente. El siguiente partido es Host *!martell que significa que todos los anfitriones excepto martell aplicarán la opción de conexión desde esta sala. Finalmente, la última definición de Host * también es posible, pero el cliente ssh solo tomará la opción de Compression User ya está definida en la Host targaryen. La lista completa de opciones utilizadas en este caso es la siguiente:

HostName 192.168.1.10
 User daenerys
 Port 7654
 IdentityFile ~/.ssh/targaryen.key
 LogLevel INFO
 Compression yes

Cuando se ejecuta ssh tyrell los modelos de host correspondientes son: Host tyrell, Host *ell, Host *!martell y Host *. Las opciones utilizadas en este caso son:

HostName 192.168.10.20
 User oberyn
 LogLevel INFO
 Compression yes

Si está ejecutando ssh martell las plantillas de host correspondientes son: Host martell, Host *ell y Host *. Las opciones utilizadas en este caso son:

HostName 192.168.10.50
 User oberyn
 Compression yes
  • Todas las demás conexiones utilizarán las opciones especificadas en las secciones Host *!martell y Host *

Sobrescriba o PTION el archivo de configuración SSH

El cliente ssh recibe su configuración en el siguiente orden de precedencia:

  1. Opciones especificadas en la línea de comando
  2. Opciones definidas en ~/.ssh/config
  3. Opciones definidas en /etc/ssh/ssh_config

Si desea anular una sola opción, puede especificarla en la línea de comando. Por ejemplo, si tiene la siguiente definición:

Host dev
 HostName dev.example.it
 User john
 Port 2322

y desea utilizar todas las demás opciones, pero conectarse como root lugar de alice solo especifique el usuario desde la línea de comando:

ssh -o "User=root" dev

La -F ( configfile ) le permite especificar un archivo de configuración de usuario alternativo.

Si desea que su cliente ssh ignore todas las opciones especificadas en su archivo de configuración ssh, puede usar:

ssh -F /dev/null [email protected]

Conclusión

Ha aprendido a configurar su archivo de configuración ssh de usuario. También puede configurar la autenticación basada en claves SSH y conectarse a servidores Linux sin ingresar una contraseña.

De forma predeterminada, SSH escucha en el puerto 22. Cambiar el puerto SSH predeterminado agrega una capa adicional de seguridad al servidor al reducir el riesgo de ataques automatizados.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.