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

10

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

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

... e mais algumas opções, você entendeu. Eu posso simplesmente fazer um hg push ssh://repo-server//hgroot/someprojectem cada repositório local e posso alterar o endereço e a porta do servidor em um único local.

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

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

leoluk
fonte

Respostas:

5

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

Você pode contornar isso usando a ProxyCommandopção ssh, juntamente com um script personalizado que cria uma conexão TCP com um servidor (usando o 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

Então, no seu .ssh/config, você precisaria do seguinte:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script
Oliver
fonte
Acho que vou escrever um script que modifica as HostNameentradas então. Obrigado.
leoluk
Isso parece Linux específica .. por exemplo, / sbin / iwgetid não parece existir sob WSL ...
Michael
-1

Outra alternativa poderia ser a criação de um script para encaminhar a porta ssh 22 do ip "correto" para alguma porta local não utilizada do seu laptop e depois para o ssh. Eu o uso em várias situações.

jacopods
fonte
1
Isso não é nada claro sem um exemplo.
Andrew Schulman