Desde la ssh_config
página del manual:
Para cada parámetro, se utilizará el primer valor obtenido. Los archivos de configuración contienen secciones separadas por especificaciones de "Host", y esa sección solo se aplica a hosts que coinciden con uno de los patrones dados en la especificación. El nombre de host coincidente es el que aparece en la línea de comando.
Dado que se utiliza el primer valor obtenido para cada parámetro, se deben proporcionar más declaraciones específicas del host cerca del comienzo del archivo y valores predeterminados generales al final.
Además, me aseguraría de comprender estas 2 secciones si no tiene claro cómo funcionan el Host y los PATRONES. Solo hay 1 nivel de coincidencia. Esta instalación es muy básica en sus capacidades de expresión regular, pero sigue siendo poderosa una vez que la asimilas.
Secciones de acogida
The possible keywords and their meanings are as follows (note that keywords
are case-insensitive and arguments are case-sensitive):
Host Restricts the following declarations (up to the next Host keyword)
to be only for those hosts that match one of the patterns given
after the keyword. If more than one pattern is provided, they
should be separated by whitespace. A single ‘*’ as a pattern can
be used to provide global defaults for all hosts. The host is the
hostname argument given on the command line (i.e. the name is not
converted to a canonicalized host name before matching).
A pattern entry may be negated by prefixing it with an exclamation
mark (‘!’). If a negated entry is matched, then the Host entry is
ignored, regardless of whether any other patterns on the line
match. Negated matches are therefore useful to provide exceptions
for wildcard matches.
See PATTERNS for more information on patterns.
PATRONES
A pattern consists of zero or more non-whitespace characters, ‘*’ (a
wildcard that matches zero or more characters), or ‘?’ (a wildcard that
matches exactly one character). For example, to specify a set of
declarations for any host in the “.co.uk” set of domains, the following
pattern could be used:
Host *.co.uk
The following pattern would match any host in the 192.168.0.[0-9] network
range:
Host 192.168.0.?
A pattern-list is a comma-separated list of patterns. Patterns within
pattern-lists may be negated by preceding them with an exclamation
mark (‘!’). For example, to allow a key to be used from anywhere within an
organisation except from the “dialup” pool, the following entry
(in authorized_keys) could be used:
from="!*.dialup.example.com,*.example.com"
Reglas de capas
El problema con su enfoque es que el patrón que coincide con la primera sección del Host no coincide con la segunda. Normalmente hago algo como esto:
Host *
User myuser
IdentityFile ~/.ssh/myidentity
Host blah
HostName complicated.hostname.com
Una cosa que la gente no suele entender con estas reglas es que pueden repetir. Entonces, lo que a menudo hago es tener varias secciones y las rompo usando Host *
's'.
Host *
User user1
Host blah1
HostName complicated1.hostname.com
Host blah2
HostName complicated2.hostname.com
Host *
User user2
Host *
que coinciden utilizarán user2 como usuario predeterminado, a menos que lo especifiquen explícitamente.Host *
se alcanza el 2º, se aplica la regla de "primer valor obtenido para cada parámetro utilizado" y, por lo tanto, esta y todas las siguientesUser
definiciones se ignoran. Una excepción a esta regla son lasIdentityFile
palabras clave, por cierto.SSH aplica todas las secciones que coinciden con el nombre de host tal como se proporciona en la línea de comando (es decir, las
HostName
reglas que encuentra no afectan las comprobaciones de condiciones posteriores). SiCanonicalizeHostname
está habilitado, volverá a aplicar los archivos de configuración cuando termine, utilizando el nombre de host actualizado. (Algunas versiones de SSH hicieron esto independientemente deCanonicalizeHostname
y su ejemplo funcionaría con esas versiones; pero eso es considerado un error por los desarrolladores de SSH. Ver # 2267 ).Lo que significa que puede usar
CanonicalizeHostname
para hacer que su ejemplo funcione, agregandoque no hará ninguna canonización pero permitirá hacer una segunda pasada con el nombre de host actualizado. (Tenga en cuenta que aún no hará que el análisis de configuración sea "recursivo", solo repítalo una vez. Por lo tanto, si cambia el nombre de host dos veces, eso no funcionaría).
fuente
Host nickname; Hostname hostname
estrofas ya no pueden proporcionar apodos. Funcionará si agrega laCanonizalizeHostname yes
palabra clave en cada bloque de apodo, pero eso duplica el tamaño de los bloques de apodo y se ve feo.Desde la página del manual
Intente cambiar el orden de sus entradas.
fuente