Cómo especificar múltiples combinaciones de HostName / Port en .ssh / config


10

Tengo varias computadoras portátiles y estaciones de trabajo que extraen y empujan desde múltiples repositorios Mercurial en un servidor central. Usualmente uso .ssh/configpara establecer un alias:

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

... y algunas opciones más, te haces una idea. Entonces puedo simplemente hacer un hg push ssh://repo-server//hgroot/someprojecten cada repositorio local, y puedo cambiar la dirección del servidor y el puerto en un solo lugar.

Para las estaciones de trabajo, esto funciona bien, pero los portátiles pueden acceder al servidor desde dentro de la red o desde el exterior, utilizando una dirección diferente y un puerto diferente. ¿Hay alguna forma de especificar múltiples combinaciones de HostName / Port para que SSH las pruebe automáticamente en orden? De esta manera, los usuarios podrían empujar y tirar sin tener que preocuparse por la dirección correcta.

(por supuesto, usar una VPN sería la solución más correcta)

Respuestas:


5

Me temo que eso no es posible con SSH.

Es posible que pueda solucionar esto utilizando la ProxyCommandopción de ssh, junto con un script personalizado que crea una conexión TCP a un servidor (usando netcat), dependiendo de cómo / dónde esté conectada su computadora portátil. Algo en la línea de:

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

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

Luego, en su .ssh/config, necesitaría lo siguiente:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script

Supongo que escribiré un script que modifica las HostNameentradas entonces. Gracias.
leoluk

Esto parece específico de Linux ... por ejemplo, / sbin / iwgetid no parece existir bajo WSL ...
Michael

-1

Otra alternativa podría ser configurar un script para reenviar el puerto ssh 22 de la ip "correcta" a algún puerto local no utilizado de su computadora portátil y luego ssh allí. Lo uso en muchas situaciones.


1
Esto no está del todo claro sin un ejemplo.
Andrew Schulman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.