Quero configurar uma conexão ssh com configurações diferentes dependendo de algumas condições. Muitos dos parâmetros nos aliases são os mesmos. Existe uma maneira de evitar repeti-los em cada alias?
No exemplo abaixo, x é variável e y = 1
constante. Idealmente, y deve ser definido uma vez.
Match host foo exec c1
x = 1
y = 1
Match host foo exec c2
x = 2
y = 1
# Some more `Match host foo` for foo on different conditions
Host foo
x = 42
y = 1
No exemplo que você postou, você pode colocar
antes de todo o trecho. Consulte As configurações de host na configuração SSH são mescladas? Você ainda pode ter
Host foo
no final, para passarx = 42
para casos ondex
não está definido por todo o conteúdo anterior. O ponto é que a primeira ocorrência relevante é usada.Bem, a primeira ocorrência relevante é usada, salvo indicação em contrário no manual . Não sabemos qual
y
é o seu. Sey
for um parâmetro para o qual vários valores podem ser especificados, a regra "o primeiro vence" não se aplica.Presumo que a regra se aplique a
y
. No exemplo que você postou, removery = 1
de todos os lugares, exceto de baixo,Host foo
também deve funcionar. Quero dizer, se nenhumMatch host foo exec …
definey
, colocary = 1
underHost foo
será a primeira ocorrência relevante parafoo
, independentemente de ser colocado antes, entre ou depois das outrasMatch
seções.Uma dica geral útil é:
(Crédito para esta resposta .)
Se você realmente precisar
y = 1
de muitos lugares da configuração (talvez porquey
seja um parâmetro para o qual "o primeiro vence" não se aplica e, portanto, a parte acima da resposta não é útil), coloque esta linha em um arquivo regular separado eInclude
o arquivo da configuração principal em todos os lugares.(Fonte:
man 5 ssh_config
.)Exemplo:
onde
default-y
é~/.ssh/default-y
ou/etc/ssh/default-y
, dependendo se o snippet está em um arquivo de configuração do usuário (como~/.ssh/config
) ou no arquivo de configuração global (como/etc/ssh/ssh_config
).