En ocasiones, es posible que necesitemos acceder a varios sistemas remotos con diferentes direcciones IP/nombres de host, nombres de usuario, puertos no estándar con varias opciones de línea de comandos. Una forma es crear un alias bash para cada conexión remota. Pero tenemos una solución fácil y mucho mejor para este problema. OpenSSH permite crear un archivo de configuración por usuario para almacenar diferentes opciones de SSH para cada servidor remoto. En este artículo, veremos los conceptos básicos de la configuración del cliente SSH con algunos ejemplos.
Requisito
Sistema Linux o macOS con OpenSSH Client instalado.
Ubicación del archivo
El archivo de configuración del lado del cliente SSH se llama config y se almacena en el directorio .ssh en el directorio de inicio del usuario. De forma predeterminada, el archivo de configuración no estará presente y el usuario debe crearlo con el comando táctil . Este archivo debe ser legible y escribible solo por el usuario y otros no deben acceder a él.
Sintaxis del archivo de configuración
El archivo de configuración SSH toma la siguiente sintaxis,
Host [Alias1] Option1 [value] Option2 [value] Option3 [value] Host [Alias2] Option1 [value] Option2 [value] Host [Alias3] Option1 [value]
SSH Client lee el archivo de configuración sección por sección. Si coincide más de un patrón, las opciones de la primera estrofa coincidente tienen prioridad. Por lo tanto, la declaración específica del host debe ser lo primero y la declaración genérica debe mantenerse en último lugar.
SSH Client no se preocupa por la sangría, pero se recomienda para la legibilidad.
Hay una gran cantidad de opciones de ssh disponibles que se pueden encontrar escribiendo man ssh_config en la terminal de Linux o puede consultar el archivo /etc/ssh/ssh_config como referencia.
Ejemplo de archivo de configuración SSH
Cuando un usuario desea conectarse a un servidor remoto a través de ssh, debe mencionar el nombre de usuario remoto seguido de la dirección IP o el nombre de host y el puerto (se puede ignorar el puerto 22 predeterminado). Considere el siguiente ejemplo,
Ahora, podemos tener las siguientes líneas en el archivo ~/.ssh/config,
Si simplemente escribimos ssh server, el cliente ssh leerá el archivo de configuración y usará las opciones mencionadas para conectarse al servidor remoto.
Patrones de configuración SSH
La directiva de host mencionada en la sintaxis puede contener un patrón o una lista de patrones separados por espacios.
Host nancy server Working Patterns nancy, server
Los patrones también pueden contener uno de los siguientes especificadores,
- * – Coincide con cero o más caracteres.
Host nancy* Working Patterns nancy,nancy123,nancy-server,etc
- ? – coincide exactamente con un carácter.
Host nancy? Working Patterns nancy1, nancy2, nancy3, etc
- ! – Cuando se usa al comienzo de un patrón, niega la coincidencia.
Host nan* !nancy Working Patterns nan-1, naneo, etc [nancy will not work]
Precedencia de configuración de SSH
Consideremos el siguiente ejemplo para comprender más sobre la precedencia en las opciones de ssh cuando se definen varios hosts,
Host nancy HostName 10.21.43.150 Compression no Host jancy HostName 10.2.33.58 PermitLocalCommand no Host trial HostName 10.2.33.57 PermitLocalCommand yes Host *cy !jancy User woot Port 22 Host * User root Port 22 Compression yes
- Cuando un usuario escribe ssh nancy, el cliente ssh aplica las opciones de la primera coincidencia, que es Host nancy. Luego busca el siguiente patrón coincidente, que es Host *cy !jancy. Luego, el siguiente patrón coincidente es Host *, aquí no se considera ninguna de las opciones, ya que se anularon en los patrones coincidentes anteriores. La lista completa de opciones son,
Host nancy HostName 10.21.43.150 User woot Port 22 Compression no
- Cuando un usuario escribe ssh jancy, los patrones coincidentes son Host jancy y Host *. Las opciones utilizadas son,
Host jancy HostName 10.2.33.58 Port 22 User root Compression yes PermitLocalCommand no
- Cuando el usuario escribe ssh trial, los patrones coincidentes son Host trial y Host *,
Host trial HostName 10.2.33.57 PermitLocalCommand yes User root Port 22 Compression yes
- Para todas las demás conexiones remotas, el cliente ssh utilizará Host *cy !jancy y Host *.
Anular las opciones del archivo de configuración de SSH
El cliente SSH lee el archivo de configuración en el siguiente orden,
- Las opciones se mencionan en la línea de comando.
- Opciones mencionadas en el archivo ~/.ssh/config.
- Opciones mencionadas en el archivo /etc/ssh/ssh_config.
Ahora, si el usuario quiere conectarse a amp150.arubathena.com pero con un usuario diferente, puede anularse en la línea de comando como se muestra a continuación: