Come specificare più combinazioni HostName / Port in .ssh / config


10

Ho più notebook e workstation che eseguono il pull e il push da più repository Mercurial su un server centrale. Di solito uso .ssh/configper impostare un alias:

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

... e alcune altre opzioni, hai avuto l'idea. Posso quindi semplicemente fare un hg push ssh://repo-server//hgroot/someprojectsu ogni repository locale e posso cambiare l'indirizzo del server e la porta in un unico posto.

Per le workstation, funziona bene, ma i notebook possono accedere al server dall'interno della rete o dall'esterno, utilizzando un indirizzo diverso e una porta diversa. È possibile specificare più combinazioni HostName / Port in modo che SSH le provi automaticamente in ordine? In questo modo, gli utenti possono spingere e tirare senza preoccuparsi dell'indirizzo corretto.

(ovviamente, l'utilizzo di una VPN sarebbe la soluzione più corretta)

Risposte:


5

Temo che non sia possibile con SSH.

È possibile aggirare il problema utilizzando l' ProxyCommandopzione di ssh, insieme a uno script personalizzato che crea una connessione TCP a un server (utilizzando netcat), a seconda di come / dove è collegato il notebook. Qualcosa sulla falsariga di:

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

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

Quindi, nel tuo .ssh/config, avresti bisogno di quanto segue:

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

Immagino che scriverò uno script che modifica le HostNamevoci allora. Grazie.
Leoluk,

Sembra specifico per Linux .. per esempio, / sbin / iwgetid non sembra esistere sotto WSL ...
Michael

-1

Un'altra alternativa potrebbe essere quella di impostare uno script per inoltrare la porta ssh 22 dell'ip "giusto" a una porta locale inutilizzata del laptop e quindi ssh lì. Lo uso in diverse situazioni.


1
Questo non è affatto chiaro senza un esempio.
Andrew Schulman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.