Un listener SOCKS locale è utile su alcune reti e assente su altre. OpenSSH può scegliere un comando proxy in modo condizionale, senza che tale scelta valga per ogni host.

Per OpenSSH con la forma OpenBSD di nc, una configurazione client di esempio è:

Host work-server
    HostName ssh.example.net
    User alex

Match originalhost work-server exec "nc -z -w 1 127.0.0.1 1080"
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

Match all

originalhost limita il controllo al nome fornito sulla riga di comando SSH. exec corrisponde quando il suo comando termina con successo. Il Match all finale chiude questo ambito condizionale per le impostazioni successive.

Ciò presuppone che nessuna impostazione precedente applicabile abbia già scelto un comando proxy o un percorso di salto in conflitto. SSH di solito usa il primo valore ottenuto per un'opzione, quindi un valore predefinito ampio all'inizio può impedire a una condizione successiva di produrre l'effetto atteso.

Un socket in ascolto è una promessa modesta

La sonda verifica l'accesso TCP a una porta locale. Non completa la negoziazione SOCKS, non stabilisce la connessione di destinazione desiderata e non dimostra quale programma possieda quella porta. Il listener può anche sparire dopo il controllo.

Il timeout mantiene delimitata una sonda fallita. Le opzioni mostrate appartengono all'interfaccia nc di OpenBSD; altri programmi con lo stesso nome di file possono esporre opzioni diverse.

Quando la condizione non corrisponde, questo esempio lascia la connessione senza questo ProxyCommand, permettendo il suo percorso abituale. Ciò è appropriato solo quando l'accesso diretto è consentito. Una politica proxy obbligatoria non dovrebbe usare un controllo di disponibilità come permesso di fuggire su un altro percorso.

Il nome host SSH di destinazione e i controlli della chiave host identificano ancora il server di destinazione. Scegliere un ausilio di trasporto non è un motivo per accettare una chiave host inaspettata.

Articoli correlati