GNU/Linux >> Tutoriales Linux >  >> Linux

Uso del archivo de configuración SSH

Si se conecta regularmente a múltiples sistemas remotos a través de SSH, encontrará que recordar todas las direcciones IP remotas, diferentes nombres de usuario, puertos no estándar y varias opciones de línea de comandos es difícil, si no imposible.

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

Este artículo 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.

Requisitos previos #

Suponemos que está utilizando un sistema Linux o macOS con un 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 directorio bajo el directorio de inicio del usuario.

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

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

De forma predeterminada, es posible que el archivo de configuración de SSH no exista, por lo que es posible que deba crearlo usando el touch comando:

touch ~/.ssh/config

Este archivo debe ser legible y escribible solo por el usuario y otros no pueden acceder a él:

chmod 600 ~/.ssh/config

Estructura y patrones del archivo 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 el Host directiva 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 hace que el archivo sea más fácil de leer.

El Host La directiva 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 patrón:

  • * - Coincide con cero o más caracteres. Por ejemplo, Host * coincide con todos los hosts, mientras que 192.168.0.* coincide con hosts en el 192.168.0.0/24 subred.
  • ? - Coincide exactamente con un carácter. El patrón, Host 10.10.0.? coincide con todos los hosts en 10.10.0.[0-9] 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 el 10.10.0.0/24 subred excepto 10.10.0.5 .

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

Puede encontrar una lista completa de opciones ssh disponibles escribiendo man ssh_config en su terminal o visitando la página man de 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 los conceptos básicos del archivo de configuración de SSH, veamos el siguiente ejemplo.

Por lo general, 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 a un host llamado dev.example.com en el puerto 2322 desde la línea de comando, escribiría:

ssh [email protected] -p 2322

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

~/.ssh/config
Host dev
    HostName dev.example.com
    User john
    Port 2322

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

ssh dev

Ejemplo de archivo de configuración SSH compartido #

Este ejemplo brinda 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 escribes ssh targaryen , el cliente ssh lee el archivo y aplica las opciones de la primera coincidencia, que es Host targaryen . Luego verifica las siguientes estrofas una por una para encontrar un patrón coincidente. El siguiente que coincide es Host * !martell (es decir, todos los hosts excepto martell ), y aplicará la opción de conexión de esta estrofa. La última definición Host * también coincide, pero el cliente ssh tomará solo la Compression opción porque el User la opción ya está definida en el Host targaryen estrofa.

    La lista completa de opciones utilizadas cuando escribes ssh targaryen es el 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
  • Si ejecuta ssh martell , los patrones de host coincidentes son:Host martell , Host *ell y Host * . Las opciones utilizadas en este caso son:

    HostName 192.168.10.50
    User oberyn
    Compression yes
  • Para todas las demás conexiones, el cliente ssh utilizará las opciones especificadas en el Host * !martell y Host * secciones.

Anular 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 comando.
  2. Opciones definidas en el ~/.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.com
    User john
    Port 2322

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

ssh -o "User=root" dev

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

Para decirle al ssh cliente para ignorar todas las opciones especificadas en el archivo de configuración ssh, use:

ssh -F /dev/null [email protected]

Conclusión #

Le mostramos cómo configurar su archivo de configuración ssh de usuario. También puede configurar una autenticación basada en clave 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 automatizados.

Si tiene alguna pregunta, deje un comentario a continuación.


Linux
  1. Cómo cambiar el límite de memoria en el archivo .htaccess

  2. El Bash'?

  3. ¿Está Mv Atomic en el Fs?

  4. ¿El Propósito De Usar Un Fifo Vs Un Archivo Temporal O Una Tubería?

  5. Ssh:¿los registros de Sshd?

Ssh:¿cómo acelerar el inicio de sesión de Ssh demasiado lento?

¿Cómo configurar la autenticación basada en clave Ssh para Github usando el archivo ~/.ssh/config?

¿Cómo cargar un archivo usando el administrador de archivos de cPanel?

Cómo conectar un host remoto usando el comando ssh

¿Cómo cambiar la codificación que usa mi servidor SFTP?

SSH:cómo incluir el comando -t en el archivo ~/.ssh/config