Como definir a configuração SSH para pegar parte do hostname ssh e usar como variável?

2

Estou usando o SSH em vários datacenters que são configurados de forma idêntica. Cada datacenter tem um jumpbox, e por trás disso há acesso a vários servidores db, etc.

É difícil especificar manualmente as entradas para todos esses servidores, quando eles são quase idênticos nos datacenters, além do IP do Jumpbox. Então, eu gostaria de definir meu arquivo .ssh/config para que eu possa digitar datacenter_name-server_behind_jumpbox e ter o SSH pegando o datacenter_name da frente do host (para que eu possa reutilizá-lo no ProxyCommand .

Por exemplo, se eu quiser acessar o servidor Maria no datacenter1, criaria uma entrada SSH para o campo de salto chamado datacenter1 . Então, para o servidor Maria por trás dele, eu configurei algo como:

Host %dc%-maria
    Hostname maria
    User jeff
    ProxyCommand ssh -q -W %h:%p %dc

Dessa forma, eu só preciso configurar uma única entrada para cada tipo de servidor localizado atrás do jumpbox e saber automaticamente qual é a caixa de salto do datacenter.

É algo assim possível?

    
por Jeff Widman 09.05.2016 / 20:52

2 respostas

4

Eu adiciono um sufixo falso ao hostname com diferentes hosts proxy

Host *.dc1
    ProxyCommand ssh -q %r@dc1 -W %h:%p

Host *.dc2
    ProxyCommand ssh -q %r@dc2 -W %h:%p

Em seguida, faça algo como ssh server1.dc1 e ele usará o host proxy.

Você pode adicionar entradas do Host para configurações personalizadas como esta:

Host server1.*
    User jeff
    
por 10.05.2016 / 00:42
0

Você pode executar um script como um ProxyCommand personalizado e fazer suas obras antes do real ProxyCommand:

.ssh/config :

Host *-maria
    Hostname maria
    User jeff          
    ProxyCommand /bin/datacenter_ssh.sh %h %p

datacenter_ssh.sh :

#!/bin/bash
COMBINED=$1
DATACENTER=$(echo $COMBINED | cut -d'-' -f1)
SERVER=$(echo $COMBINED | cut -d'-' -f2)
PORT=$2

ssh -q -W $SERVER:$PORT $DATACENTER
    
por 10.05.2016 / 00:18

Tags