Cómo configurar las conexiones SSH personalizadas para simplificar el acceso remoto

Cómo configurar las conexiones SSH personalizadas para simplificar el acceso remoto

Ssh (Cliente SSH) es un programa para acceder de forma remota a una máquina, permite que un usuario ejecute comandos en un host remoto. Es uno de los métodos más recomendados para iniciar sesión en un host remoto, ya que está diseñado para proporcionar comunicaciones cifradas seguras entre dos hosts no confiables en una red insegura.

Ssh utiliza un archivo de configuración (personalizado) específico de todo el sistema y de todo el usuario. En este tutorial, explicaremos cómo crear un archivo de configuración SSH personalizado y usar ciertas opciones para conectarse a hosts remotos.

Requisitos:

  1. Debe haber instalado el cliente OpenSSH en su escritorio de Linux.
  2. Comprender las opciones comunes utilizadas para conexiones remotas a través de SSH.

Archivos de configuración del cliente SSH

A continuación se muestran las ubicaciones de los archivos de configuración del cliente SSH:

  1. /etc/ssh/ssh_config - Este es el archivo de configuración predeterminado de todo el sistema. Contiene configuraciones que se aplican a todos los usuarios de SSH Client Machine.
  2. ~/.ssh/config o $ Inicio/.ssh/config - es el archivo de configuración específico/personalizado del usuario. Tiene configuraciones que se aplican a un usuario específico. Por lo tanto, anula la configuración predeterminada en el archivo de configuración de todo el sistema. Este es el archivo que crearemos y usaremos.

De forma predeterminada, los usuarios se autentican en SSH usando contraseñas, sin embargo, puede configurar el inicio de sesión sin contraseña SSH usando SSH Keygen en 5 pasos simples.

Nota: En caso de que el directorio ~/.ssh no existe en su sistema de escritorio, cree con los siguientes permisos.

$ mkdir -p ~/.ssh $ chmod 0700 ~/.ssh 

El chmod El comando anterior implica que solo el usuario puede haber leído, escribir y ejecutar permisos en el directorio según lo requerido por la configuración de SSH.

Cómo crear un archivo de configuración SSH específico del usuario

Este archivo generalmente no se crea de forma predeterminada, por lo que debe crearlo con los permisos de lectura/escritura solo para el usuario.

$ touch ~/.ssh/config $ chmod 0700 ~/.ssh/config 

El archivo anterior contiene secciones definidas por las especificaciones de los hosts, y una sección solo se aplica a los hosts que coinciden con uno de los patrones establecidos en la especificación.

El formato convencional de ~/.ssh/config es el siguiente, y todas las líneas vacías, así como las líneas que comienzan con '#' se consideran como comentarios:

Host host1 ssh_option1 = valor1 ssh_option2 = value1 value2 ssh_option3 = value1 host host2 ssh_option1 = value1 ssh_option2 = value1 value2 host * ssh_option1 = value1 ssh_option2 = value1 value2 

Del formato anterior:

  1. Anfitrión anfitrión1 - es una definición de encabezado para host1, Aquí es donde comienza una especificación de host y termina con la siguiente definición de encabezado, Anfitrión anfitrión2 Hacer una sección.
  2. host1, anfitrión son simplemente alias de host para usar en la línea de comando, no son los nombres de host reales de los hosts remotos.
  3. Las opciones de configuración como ssh_option1 = valor1, ssh_option2 = value1 value2 aplicar a un host emparejado y debe estar sangrado para formatear bien organizado.
  4. Para una opción como ssh_option2 = value1 value2, el valor valor1 se considera primero, entonces valor2.
  5. La definición del encabezado Anfitrión * (dónde * es un patrón: comodín que coincide con cero o más caracteres) coincidirá con cero o más hosts.

Todavía considerando el formato anterior, así es como SSH lee el archivo de configuración. Si ejecuta un comando ssh para acceder de forma remota host1 al igual que:

$ ssh host1 

El comando SSH anterior hará las siguientes cosas:

  1. coincidir con el alias host host1 en el archivo de configuración y aplica las opciones establecidas en el encabezado de definición, Anfitrión anfitrión1.
  2. luego se mueve a la siguiente sección de host, Anfitrión anfitrión2 y encuentra que el nombre proporcionado en la línea de comandos no coincide, por lo que no se usan opciones desde aquí.
  3. Procede a la última sección, Anfitrión *, que coincide con todos los anfitriones. Aquí, aplica todas las opciones en esta sección a la conexión del host. Pero no puede anular ningún valor de opciones que ya se usen en las secciones anteriores.
  4. Lo mismo se aplica a anfitrión.

Cómo usar el archivo de configuración SSH específico del usuario

Una vez que haya entendido cómo funciona el archivo de configuración del cliente SSH, puede crearlo de la siguiente manera. Recuerde usar opciones y valores (alias de host, números de puerto, nombres de usuario, etc.) aplicable al entorno de su servidor.

Abra el archivo de configuración con su editor favorito:

$ vi ~/.ssh/config 

Y definir las secciones necesarias:

Anfitrión Fedora25 Nombre de host 192.168.56.15 Puerto 22 ForingX11 No Host Centos7 Nombre de host 192.168.56.10 Puerto 22 ForwardX11 Sin host ubuntu Nombre de host 192.168.56.5 Puerto 2222 ForwardX11 Sí Host * Usuario TecMint IdentityFile ~/.SSH/ID_RSA Protocolo 2 Compresión Sí ServeraliveInterval 60 ServerAlivecountMax 20 Loglevel Información 

Una explicación detallada de las opciones de configuración SSH anteriores.

  1. Nombre de host - Define el nombre de host real para iniciar sesión, alternativamente, puede usar direcciones IP numéricas, también está permitido (tanto en la línea de comando como en Nombre de host especificaciones).
  2. Usuario - Especifica al usuario para iniciar sesión como.
  3. Puerto - Establece el número de puerto para conectarse en el host remoto, el valor predeterminado es 22. Use el número de puerto configurado en el archivo de configuración SSHD del host remoto.
  4. Protocolo - Esta opción define las versiones del protocolo que SSH debería admitir en orden de preferencia. Los valores habituales son '1' y '2', múltiples versiones deben estar separadas por comas.
  5. Archivo de identidad - Especifica un archivo desde el cual se lee la identidad de autenticación DSA, ED25519, RSA o ECDSA del usuario.
  6. VENTAX11 - Define si las conexiones X11 se redirigirán automáticamente a través del canal seguro y la pantalla de visualización. Tiene dos valores posibles "Sí" o "No".
  7. Compresión - se usa para establecer la compresión durante la conexión remota con el "Sí" valor. El valor predeterminado es "No".
  8. ServeraliveInterval - Establece un intervalo de tiempo de espera en segundos después de lo cual si no se ha recibido respuesta (o datos) del servidor, SSH enviará un mensaje a través del canal cifrado para solicitar una respuesta desde el servidor. El valor predeterminado es 0, lo que significa que no se enviarán mensajes al servidor, o 300 Si se ha definido la opción BatchMode.
  9. Serveralivecountmax - Establece el número de mensajes vivos del servidor que se pueden enviar sin que SSH reciba ninguna respuesta del servidor.
  10. Nivel de registro - Define el nivel de verbosidad que se usa al registrar mensajes de SSH. Los valores permitidos incluyen: silencio, fatal, error, información, verbose, depuración, depuración1, depug2 y depug33. Y el valor predeterminado es información.

La forma estándar de conectarse a cualquier host de Linux remoto (CentOS 7 - en mi caso), definida en la sección dos del archivo de configuración anterior, normalmente escribiríamos el comando a continuación:

$ ssh -i ~/.SSH/ID_RSA -P 22 [Correo electrónico protegido] 

Sin embargo, con el uso del archivo de configuración del cliente SSH, simplemente podemos escribir el siguiente comando:

$ ssh centos7 

Puede encontrar más opciones y ejemplos de uso en la página del hombre de configuración del cliente SSH:

$ hombre ssh_config 

Eso es todo por ahora, en esta guía, le explicamos cómo usar un archivo de configuración del cliente SSH específico del usuario (personalizado) en Linux. Use el formulario de comentarios a continuación para escribirnos con respecto a este artículo.