Parece que não há como fazer isso.
Eu tenho que administrar uma pilha inteira de hosts sobre o ssh. No entanto, só posso acessá-los através de um determinado servidor ssh de gateway.
Eu tenho o seguinte no meu ~/.ssh/config
:
Host mygateway-www
Hostname www
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh mygateway nc %h 22
No entanto, tenho que me conectar a muitas dessas máquinas. Em vez de colocar dezenas de entradas no meu ~/.ssh/config
, existe alguma maneira que eu possa ter algo assim:
Host mygateway-*
Hostname ???WHAT GOES HERE????
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh mygateway nc %h 22
Eu sei que você pode usar %h
no argumento Hostname
, mas esse seria o nome do host. O que eu realmente preciso é de algum tipo de substituição de string, como ${VAR%thingie}
do bash. Isso é possível?
Isso pode ser feito com o seguinte arquivo de configuração SSH:
Host *
ServerAliveInterval 120
Host gateway.somewhere.com
User jdoe
Host gateway+*
User jdoe
ProxyCommand ssh -T -a $(echo %h |cut -d+ -f1).somewhere.com nc $(echo %h |cut -d+ -f2) %p 2>/dev/null
ControlMaster auto
ControlPath ~/.ssh/ssh-control_%r@%h:%p
Você acessa seus hosts internos da seguinte maneira:
ssh gateway+internalhost01.somewhere.com
ssh gateway+internalhost02.somewhere.com
O nome que você escolher para a metade direita deve ser resolvido pelo host de salto.
O parâmetro User é especificado caso você precise mapear manualmente para diferentes usuários nas diferentes classes de hosts. O ControlMaster e o ControlPath são especificados para permitir a reutilização da conexão SSH.
Você não precisa especificar manualmente HostName, pois ele virá da linha de comando.
Basta tentar:
Host *.domain
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh mygateway /usr/bin/nc %h 22
Eu tive um problema semelhante e acabei escrevendo um script que gerou todo o clichê para mim. Eu não mudo mais o ~ / ssh / config, eu mudo o ~ / ssh / config.in e executo novamente o meu script.
Eu tinha um cliente com a mesma configuração e usei DSSH para resolver meu problema.
O DSSH, entre outras coisas, permite que você faça login de forma transparente em hosts remotos por meio de um host de gateway.
Casos de uso
Tags ssh