Regexp em .ssh / config

12

No trabalho, muitas vezes tenho que fazer login em hosts que seguem um esquema de nomenclatura comum, por exemplo qc01- - qc12, hc01- hc10e assim por diante. Tudo isso precisa obter os mesmos valores de configuração no meu laptop .ssh/config. Claro, eu poderia usar entradas para os hosts qc*e hc*, mas estou pensando se, de alguma forma, é possível usar expressões regulares?

andreas-h
fonte

Respostas:

5

Por favor, consulte a PATTERNSseção em man ssh_config.

A resposta longa é: Não, você não pode, a menos que faça um patch sshpara apoiar isso.

gelraen
fonte
Não consigo encontrar esta seção no meu man ssh_config.
Patryk
1
tente linux.die.net/man/5/ssh_config
gelraen 23/01
Que versão isso apareceu?
vonbrand
1

Você pode usar expressões regulares completas no seu ssh_config.

A documentação relevante é muito difícil de ler e entender na IMO. Eu só o entendo porque tenho mais de 13 anos de experiência no Linux e mais de 8 anos no uso ssh. Então, aqui está o meu resumo da documentação:

  • man ssh_config descreve um recurso chamado Match
  • existe um recurso chamado, execque permite usar um comando arbitrário do shell para determinar uma correspondência
  • a passagem de parâmetros de entrada para o comando arbitrário do shell é possível e descrita na seção TOKENS

No meu caso, acabei usando no meu~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

O teste deve ser feito com algo complicado como este. E para fazer esse teste, você chama ssh -vvv HOSTNAME. O que mostrará exatamente o que está acontecendo e se o seu novo Matchfoi implementado corretamente.

Trevor Boyd Smith
fonte
0

Estendendo a resposta de Trevor:

Hosts mais complexos também são possíveis, como correspondência foo123.123e, foo10.10em uma regra, SEM entradas DNS para os nomes de host usados:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Usando o ProxyCommand para manipular o conteúdo de% h com o shell e conectando-se à porta correta por meio de um netcat. Dessa forma, você pode criar predefinições para a categoria de hosts, sem criar entradas individuais.

criança levada
fonte