Comodín de configuración SSH en nombre de host expandido

25

Quiero tener un comodín en mi configuración SSH para establecer mi nombre de usuario predeterminado en un valor particular para todos los hosts en un determinado dominio. Pero también quiero tener algunos nombres cortos para algunos hosts en particular. Esperaba que algo como esto funcionara:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

Con esa configuración, si escribo ssh host1.mydomain.comse evalúa [email protected], pero si ssh host1escribo no aplica mi configuración de Usuario y en su lugar veo [email protected].

¿Hay alguna manera de que los comodines coincidan en el nombre de host expandido final para que pueda escribir el formulario corto o largo y obtener los mismos resultados?

Mu Mind
fuente
¿Qué pasa si cambia el orden, colocando la sección comodín en segundo lugar?
esmit
¿Lo has probado? Estoy bastante seguro de que solo te da el nombre de usuario correcto con el dominio incorrecto, en todo caso.
Mu Mind
No lo he intentado, es por eso que hice una respuesta de comentario como algo para probar, en lugar de una respuesta negativa.
esmit

Respuestas:

13

Simplemente use:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Los patrones alternativos son suministrados por un espacio en blanco delimitador en una línea Host .
  • Se aplican todos los patrones de host coincidentes .
  • Si una opción ocurre varias veces, solo se usa la primera ocurrencia

fuente
3
Eso ahorra un poco de mecanografía al menos. ¿Parece que no conoce ninguna forma de evitar duplicar la información del dominio?
Mu Mind
Sería genial si SSH pudiera intentar agregar el dominio predeterminado, es decir, "lan" o "mycompany.com", en lugar de tener que codificarlo en el archivo de configuración.
Saustrup
18

Simplemente puede configurar CanonicalizeHostnamepara yesvolver a analizar ssh_config con el nombre de host canónico de su alias. Por ejemplo:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Alternativamente, si desea reasignar también los nombres de host, puede usar en Matchlugar de Hosthacer coincidir solo los nombres de host canónicos. Por ejemplo, en:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

La directiva de usuario no se establecerá cuando se conecte a host2.mydomain.com.

Timesquare
fuente
Tenga en cuenta que todavía hay versiones antiguas de ssh que no admiten estas opciones; si se encuentra con una de ellas, como lo hice, la solución Host seguirá funcionando.
Kyrstellaine
2

Hacer uso de CanonicalDomains también funcionará.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Si desea tener un nombre corto para un host en particular, por ejemplo:

Host h
Hostname host1

Sin embargo, no recomendaría un nombre tan corto.

jacob
fuente
1

Puede usar% h.mydomain.com en su .ssh / config.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Ahora puedes hacer:

ssh host1
en lugar de
ssh host1.mydomain.com
ssh host10
en lugar de
ssh host10.mydomain.com
y ssh host100

Saludos, Bert

Bert de Ridder
fuente