Ecco il problema:sto provando a eseguire l'SSH in un sistema accessibile da almeno 3 reti diverse, a volte direttamente, a volte tramite un proxy, in momenti diversi.
La connessione diretta è molto più veloce e affidabile della connessione tramite un host intermedio, che è ancora una volta molto più veloce e affidabile della connessione su Internet generale, quindi vorrei che SSH tentasse di connettersi in 3 modi diversi in modo prioritario, scegliendo il prima che riesce.
Sono tutti la stessa macchina, ovviamente, quindi non voglio continuare a dover scegliere manualmente tra 3 alias diversi a seconda di dove mi sto connettendo.
Tuttavia, non riesco a trovare alcun meccanismo per risolverlo. È possibile farlo o no?
In caso negativo, cosa fanno generalmente le persone in una situazione del genere?
Risposta accettata:
Non utilizzare alias per ssh
connessioni! Usa un corretto ssh_config
in ~/.ssh/config
. Ha alcune funzionalità davvero potenti.
Diciamo che puoi identificare in quale rete ti trovi. Ad esempio usando il tuo IP, che può essere estratto ad esempio usando hostname -I
. Quindi scriviamo un po' di configurazione:
# in network1 I am getting ip from "10.168.*.*" and I need to connect through proxy
Match Host myalias Exec hostname -I | grep 10\.168\.
Hostname real-host-IP
ProxyCommand ssh -W %h:%p proxy-server
# in network2 I am getting IP from "192.168.*.*" and I do not need a proxy
Match Host myalias Exec hostname -I | grep 192\.168\.
Hostname real-host-IP
# in network3 I am getting something else
Credo che tu abbia capito...