Een lokale SOCKS-listener is nuttig op sommige netwerken en ontbreekt op andere. OpenSSH kan een proxycommando voorwaardelijk kiezen, zonder die keuze op elke host toe te passen.

Voor OpenSSH met de OpenBSD-vorm van nc is een illustratieve clientconfiguratie:

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 beperkt de controle tot de naam die op de SSH-opdrachtregel is opgegeven. exec komt overeen wanneer het commando met succes eindigt. De laatste Match all beëindigt dat voorwaardelijke bereik voor volgende instellingen.

Dit veronderstelt dat geen eerdere toepasselijke instelling al een tegenstrijdig proxycommando of een sprongroute heeft gekozen. SSH gebruikt meestal de eerst verkregen waarde voor een optie, dus een brede standaardwaarde bovenaan kan verhinderen dat een latere voorwaarde het verwachte effect heeft.

Een luisterende socket is een bescheiden belofte

De test controleert TCP-toegang tot een lokale poort. Hij voltooit de SOCKS-onderhandeling niet, brengt de gewenste bestemmingsverbinding niet tot stand en bewijst niet welk programma die poort bezit. De listener kan na de controle ook verdwijnen.

De time-out houdt een mislukte test begrensd. De getoonde opties horen bij de OpenBSD nc-interface; andere programma's met dezelfde bestandsnaam kunnen andere opties bieden.

Als de voorwaarde niet overeenkomt, laat dit voorbeeld de verbinding zonder dit ProxyCommand, waardoor de gewone route wordt toegestaan. Dat is alleen gepast wanneer directe toegang is toegestaan. Een verplicht proxybeleid moet een beschikbaarheidscontrole niet gebruiken als toestemming om naar een andere route te ontsnappen.

De SSH-doelhostnaam en de host-sleutelcontroles identificeren nog steeds de doelserver. Het kiezen van een transporthelper is geen reden om een onverwachte hostsleutel te accepteren.

Gerelateerde artikelen