Como especificar várias combinações HostName / Port em .ssh / config

9

Eu tenho vários notebooks e estações de trabalho que puxam e empurram de vários repositórios do Mercurial em um servidor central. Eu costumo usar .ssh/config para definir um alias:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

... e mais algumas opções, você entende a ideia. Então, posso simplesmente fazer um hg push ssh://repo-server//hgroot/someproject em cada repositório local e posso alterar o endereço do servidor e a porta em um só lugar.

Para estações de trabalho, isso funciona bem, mas os notebooks podem acessar o servidor de dentro ou fora da rede, usando um endereço diferente e uma porta diferente. Existe alguma maneira eu posso especificar várias combinações HostName / Port para que o SSH automaticamente tenta-los em ordem? Dessa forma, os usuários poderiam empurrar e puxar sem precisar se preocupar com o endereço correto.

(obviamente, usar uma VPN seria a solução mais correta)

    
por leoluk 22.06.2012 / 10:28

2 respostas

5

Receio que isso não seja possível com o SSH.

Você poderia trabalhar em torno disso usando a opção ProxyCommand do ssh, junto com um script personalizado que cria uma conexão TCP com um servidor (usando netcat), dependendo de como / onde o seu notebook está conectado. Algo ao longo das linhas de:

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

Em seguida, no seu .ssh/config , você precisaria do seguinte:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script
    
por 22.06.2012 / 11:32
-1

Outra alternativa poderia ser configurar um script para encaminhar a porta ssh 22 do ip “certo” para alguma porta local não usada do seu laptop e depois o ssh lá. Eu uso em um grande número de situações.

    
por 08.05.2015 / 18:28

Tags