Blokkeert je netwerkomgeving ssh-verkeer naar poort 22 en verplicht ze om alle http-verkeer door een proxy te laten gaan, dan zit je met een probleem als je dringend op een externe server moet inloggen. Er bestaan verschillende manieren om dit soort te strenge firewalls te omzeilen, maar Corkscrew verdient een speciale vermelding, omdat deze tool geen enkele wijziging aan de serverkant vereist. Het programma werkt op zowat alle Linux- en UNIX-achtige systemen, en via Cygwin ook op Windows.

Corkscrew

Om in je ssh-verbindingen van Corkscrew gebruik te maken, voeg je in je ~/.ssh/config een regel toe met de verwijzing naar het juiste proxy-commando. Dat kan voor specifieke hosts of voor alle. In het laatste geval ziet het configuratiebestand er als volgt uit:

Host *

ProxyCommand corkscrew proxy.example.com proxypoort %h %p

Je vervangt hier proxy.example.com door het IP-adres of de domeinnaam van de http-proxy en je vult het juiste poortnummer voor de proxy in (vaak 8080 of 3128). Wanneer je nu met ssh op een willekeurige host inlogt (Host *), gebruikt ssh het commando corkscrew om de verbinding door proxy.example.com te tunnelen. Daarbij vervangt het %h en %p automatisch door de hostnaam en het poortnummer van de server die je wil bereiken. Staat corkscrew niet in je pad, dan moet je in het configuratiebestand het absolute pad opgeven.

Gebruikt de http-proxy authenticatie (enkel basic authenticatie is ondersteund, geen digest), dan geef je je gebruikersnaam en wachtwoord op in een bestand, bijvoorbeeld ~/.ssh/http-proxy-auth:

gebruikersnaam:wachtwoord

In de ProxyCommand-regel in ~/.ssh/config voeg je dan op het einde na %p nog de locatie van het authenticatiebestand toe.

Het hoeft hier niet te stoppen bij simpel inloggen. Alles wat je normaal met ssh doet, kun je dankzij Corkscrew blijven doen achter een http-proxy, inclusief het tunnelen van andere poorten. Corkscrew is getest met de http-proxy's Gauntlet, CacheFlow, JunkBuster, Squid en Apache's mod_proxy.

Niet altijd voldoende

Laat de netwerkomgeving alleen verkeer van de http-proxy naar poort 80 (http) of 443 (https) toe, dan volstaat deze pure clientoplossing niet, want dan blokkeert ze de verbinding van de http-proxy naar je ssh-server. Om dit te omzeilen, moet je aan de serverkant een wijziging doorvoeren: laat je ssh-server bijvoorbeeld ook op poort 443 luisteren. Draai je echter al een webserver met ssl op dezelfde host, dan heb je een ssl/ssh-multiplexer zoals sslh nodig, die op poort 443 luistert en inkomend verkeer forwardt naar de webserver of ssh-server.

Bron: Techworld