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 myusername@host1.mydomain.com, pero si ssh host1escribo no aplica mi configuración de Usuario y en su lugar veo mylocalusername@host1.mydomain.com.

¿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?


¿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

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.


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.