¿Expandir los nombres de host a fqdn antes de llamar a ssh?

¿Expandir los nombres de host a fqdn antes de llamar a ssh?

Utilizo un archivo .ssh/config para configurar mi nombre de usuario de forma adecuada en función de una parte determinada de un subdominio, por ejemplo

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Esto funciona si escribo:

ssh foo.widgetshop.com

pero no funciona si escribiera:

ssh foo

que tras la resolución de la ruta de búsqueda se convierte en el mismo fqdn.

¿Alguien tiene una manera de expandir los nombres cortos antes de llamar a ssh o un enfoque alternativo?

Respuesta1

Quizás puedas usar el hostcomando:

ssh $(host -t A  foo | cut -f1 -d" ")

Ponlo en un script de shell (reemplaza "foo" con "$1") y ejecuta ssh.

Respuesta2

A partir de OpenSSH 6.5, puedes hacer esto con la CanonicalizeHostnameopción en ssh_config. Aquí hay un ejemplo que debería hacer lo que desea:

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

Respuesta3

La página de manual ssh_config responde a esto:

El host es el argumento del nombre de host proporcionado en la línea de comando (es decir, el nombre no se convierte a un nombre de host canonicalizado antes de hacer coincidir).

En otras palabras, no funciona porque no funciona de esa manera.

Respuesta4

por favor vea mi "enfoque alternativo")

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

información relacionada