Androide

Usando el archivo de configuración ssh

Conexión remota con Secure Shell (SSH) en Ubuntu 18.04

Conexión remota con Secure Shell (SSH) en Ubuntu 18.04

Tabla de contenido:

Anonim

Una opción sería crear un alias bash para cada conexión de servidor remoto. Sin embargo, hay otra solución mucho mejor y más simple 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 conecta.

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

Asumimos que está utilizando 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 OpenSSH se denomina config y se almacena en el directorio .ssh en el directorio de inicio del usuario.

El directorio ~/.ssh se crea automáticamente cuando el usuario ejecuta el comando ssh por primera vez. Si el directorio no existe en su sistema, créelo usando el siguiente comando:

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

De manera predeterminada, el archivo de configuración SSH puede no existir, 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 por otros:

chmod 600 ~/.ssh/config

Estructura y patrones del archivo de configuración SSH

El archivo de configuración SSH toma 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 secciones (secciones). Cada sección comienza con la directiva Host y contiene opciones SSH específicas que se utilizan al establecer una conexión con el servidor SSH remoto.

La sangría no es necesaria, pero se recomienda ya que facilita la lectura del archivo.

La directiva Host puede contener un patrón o una lista de patrones separados por espacios en blanco. Cada patrón puede contener cero o más caracteres que no sean espacios en blanco o uno de los siguientes especificadores de patrones:

  • * - Coincide con cero o más caracteres. Por ejemplo, Host * coincide con todos los hosts, mientras que 192.168.0.* Coincide con hosts en la subred 192.168.0.0/24 . ? - Coincide exactamente con un personaje. El patrón, Host 10.10.0.? coincide con todos los hosts en 10.10.0. rango. ! - Cuando se usa al comienzo de un patrón, niega la coincidencia. Por ejemplo, Host 10.10.0.* !10.10.0.5 coincide con cualquier host en la subred 10.10.0.5 excepto 10.10.0.5 .

El cliente SSH lee el archivo de configuración stanza por stanza, y si coinciden más de un patrón, las opciones de la primera stanza coincidente tienen prioridad. Por lo tanto, se deben proporcionar más declaraciones específicas del host al comienzo del archivo y anulaciones más generales al final del archivo.

Puede encontrar una lista completa de las opciones de ssh disponibles escribiendo man ssh_config en su terminal o visitando la página de man 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

Ahora que hemos cubierto lo básico del archivo de configuración SSH, veamos el siguiente ejemplo.

Normalmente, cuando se conecta a un servidor remoto a través de SSH, debe especificar el nombre de usuario remoto, el nombre de host y el puerto. Por ejemplo, para iniciar sesión como un usuario llamado john en un host llamado dev.example.com en el puerto 2322 desde la línea de comando, debe escribir:

ssh [email protected] -p 2322

Para conectarse al servidor utilizando las mismas opciones que se proporcionan en el comando anterior simplemente escribiendo ssh dev , coloque las siguientes líneas en su archivo "~/.ssh/config :

~ /.ssh / config

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

Ahora, cuando escriba ssh dev , el cliente ssh leerá el archivo de configuración y usará los detalles de conexión que se especifican para el host de desarrollo:

ssh dev

Ejemplo de archivo de configuración SSH compartido

Este ejemplo proporciona información más detallada sobre los patrones de host y la precedencia de 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

  • Cuando escribe ssh targaryen , el cliente ssh lee el archivo y aplica las opciones de la primera coincidencia, que es Host targaryen . Luego comprueba las siguientes estrofas una por una para ver si hay un patrón coincidente. La siguiente coincidencia es Host * !martell (es decir, todos los hosts excepto martell ), y aplicará la opción de conexión desde esta estrofa. La última definición Host * también coincide, pero el cliente ssh solo tomará la opción de Compression porque la opción User ya está definida en la Host targaryen del Host targaryen .

    La lista completa de opciones utilizadas cuando escribe ssh targaryen es la siguiente:

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

    Al ejecutar ssh tyrell los patrones de host coincidentes 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

    HostName 192.168.10.50 User oberyn Compression yes

    Para todas las demás conexiones, el cliente ssh utilizará las opciones especificadas en las secciones Host * !martell y Host * .

Anular la opción de archivo de configuración SSH

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

  1. Opciones especificadas desde la línea de comandos. Opciones definidas en ~/.ssh/config Opciones definidas en /etc/ssh/ssh_config .

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

y desea utilizar todas las demás opciones, pero para conectarse como usuario root lugar de john simplemente especifique el usuario en la línea de comando:

ssh -o "User=root" dev

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

Para indicarle al cliente ssh que ignore todas las opciones especificadas en el archivo de configuración ssh, use:

ssh -F /dev/null [email protected]

Conclusión

Le hemos mostrado cómo configurar su archivo de configuración ssh de usuario. También es posible que desee configurar una autenticación basada en claves SSH y conectarse a sus 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 a su servidor al reducir el riesgo de ataques automáticos.

terminal ssh