Talvez você possa usar o comando host
:
ssh $(host -t A foo | cut -f1 -d" ")
Coloque isso em um script shell (substitua "foo" por "$ 1") e execute ssh.
Eu faço uso de um arquivo .ssh / config para definir meu nome de usuário adequadamente com base em uma determinada parte de um subdomínio, por exemplo,
Host *widgetshop.com*
User foobar
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Host *
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Isso funciona se eu escrever:
ssh foo.widgetshop.com
mas não funciona se eu escrever:
ssh foo
que na resolução do caminho de pesquisa se torna o mesmo fqdn.
Alguém tem uma maneira de expandir os apelidos antes de chamar o ssh ou uma abordagem alternativa?
O manpage ssh_config responde isso:
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).
Em outras palavras, não funciona porque não funciona assim.
A partir do OpenSSH 6.5, você pode fazer isso com a opção CanonicalizeHostname
em ssh_config. Veja um exemplo que deve fazer o que você quer:
CanonicalizeHostname yes
CanonicalDomains widgetshop.com
Host *.widgetshop.com
User foobar
por favor, veja minha "abordagem alternativa")
mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$
Tags ssh domain-name-system