Curinga de configuração SSH no nome do host expandido

25

Quero ter um curinga na minha configuração SSH para definir meu nome de usuário padrão para um valor específico para todos os hosts em um determinado domínio. Mas também quero ter nomes abreviados para alguns hosts em particular. Eu esperava que algo assim funcionasse:

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

Com essas configurações, se eu digitar, ssh host1.mydomain.comele avalia como [email protected], mas se eu digitar ssh host1, não aplica minha configuração de Usuário e, em vez disso, vejo [email protected].

Existe uma maneira de combinar os curingas no nome do host expandido final para que eu possa digitar o formulário curto ou longo e obter os mesmos resultados?

Mu Mind
fonte
E se você alternar a ordem, colocando a seção curinga em segundo.
esmit
Tentaste? Tenho certeza de que apenas você recebe o nome de usuário certo com o domínio errado, se houver.
Mu Mind
Eu não tentei, é por isso que fiz uma resposta de comentário como algo a tentar, em vez de uma resposta negativa.
esmit

Respostas:

13

Basta usar:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Padrões alternativos são fornecidos por um espaço em branco delimitante em uma linha Host .
  • Todos os padrões de host correspondentes são aplicados.
  • Se uma opção ocorrer várias vezes, somente a 1ª ocorrência será usada

fonte
3
Isso economiza um pouco de digitação, pelo menos. Parece que você não conhece nenhuma maneira de evitar duplicar as informações do domínio?
Mu Mente
Seria ótimo se o SSH tentasse adicionar o domínio padrão, ou seja, "lan" ou "minhaempresa.com", em vez de precisar codificá-lo no arquivo de configuração.
Saustrup 27/07
18

Você pode simplesmente configurar CanonicalizeHostnamepara yesanalisar novamente o ssh_config com o nome de host canônico do seu alias. Por exemplo:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Como alternativa, se você também quiser remapear os nomes de host, poderá usar em Matchvez de Hostpara corresponder apenas aos nomes de host canônicos. Por exemplo, em:

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

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

A diretiva de usuário não será definida quando você se conectar host2.mydomain.com.

Praça do tempo
fonte
Observe que ainda existem versões antigas do ssh por aí que não suportam essas opções - se você encontrar uma delas, como eu fiz, a solução Host ainda funcionará.
Kyrstellaine
2

Utilizar o CanonicalDomains também funcionará.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Se você deseja ter um nome abreviado para um host específico, por exemplo:

Host h
Hostname host1

Eu não recomendaria um nome tão curto, no entanto.

jacob
fonte
1

Você pode usar% h.meudominio.com em seu .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

Agora você pode fazer:

ssh host1
ao invés de
ssh host1.meudominio.com
ssh host10
ao invés de
ssh host10.meudominio.com
e ssh host100

Atenciosamente, Bert

Bert de Ridder
fonte