EDIT: présentation plus complète de SSH, incluant cette partie, est postée sur mon blog.
Il vous est peut-être déjà arrivé d'être derrière un proxy en entreprise, et évidemment, seuls quelques ports (sortants) sont ouverts, et certains sites sont bloqués.
Vous ne pouvez pas lire vos mails dans votre logiciel de courrier, vous n'avez pas accès à des sites qui sont bloqués (si le blocage est injustifié, il faut envoyer un mail à l'admin, etc...), vous n'avez pas accès à irc (c'est pratique pour avoir de l'aide sur du développement)...
Bref, vous êtes bloqués.
Ce tuto va présenter comment passer à travers le proxy, et comment, avec une machine "rebond" (votre pc fixe chez vous par exemple), vous pouvez accéder à tous les sites, à irc, à votre messagerie instantanée...
Passer à travers le proxy
Le proxy filtre tout le trafic, et décide ce qu'il doit accepter ou refuser.
Mais bien sûr, il existe des connexions sécurisées (pour accéder à des sites sécurisés sur https par exemple, comme les sites bancaires), et par définition, il ne peut pas analyser ce traffic, car c'est crypté !
Il suffit donc de se connecter à un serveur qui écoute sur le port 443 (port du https) pour le proxy vous laisse passer. C'est le cas par exemple avec Jabber, dans votre client jabber, vous pouvez spécifier d'utiliser SSL sur le port 443, dans ce cas vous pouvez vous y connecter sans problème.
Mettre en place un tunnel SSH
Mais bon, c'est bien gentil, mais tous les serveurs n'ont pas un démon qui tourne sur le port 443 pour vous accueillir. Donc vous allez configurer un serveur (votre pc fixe chez vous par exemple) pour que lui, écoute sur le port 443 et vous obéisse.
Sur votre serveur, installez un serveur SSH qui écoute sur le port 443 :
sudo apt-get install openssh-server
Pour changer le port, éditez
/etc/ssh/sshd_config :
gksudo gedit /etc/ssh/sshd_config
Et remplacez 22 par 443 sur la ligne :
Port 22
(ou laissez la ligne Port 22 et rajoutez une ligne Port 443)
Ouvrez le port 443 sur votre routeur.
Alternativement, vous pouvez laisser 22, et configurer votre routeur pour qu'il redirige le port 443 sur le port 22, ça permet d'utiliser le ssh en local sur le port 22, qui est le port par défaut.
Redémarrez le serveur ssh :
sudo /etc/init.d/ssh restart
Voilà c'est tout pour le serveur.
Pour plus de facilité et de sécurité, vous pouvez mettre en place une connexion par clés publique/privée, cf
http://doc.ubuntu-fr.org/ssh
Maintenant le client.
Installez corkscrew :
sudo apt-get install corkscrew
Cela vous permettra de passer une connexion ssh au dessus de https.
Supposons que le proxy que vous essayez de passer est : proxy.entreprise.fr sur le port 3128
Et que votre PC fixe est accessible depuis l'extérieur par moi.mondomaine.fr (si vous n'en n'avez pas, utilisez votre ip).
Sur le pc client, tapez la commande :
ssh -D1111 -p443 moi@moi.mondomaine.fr -o"ProxyCommand corkscrew proxy.entreprise.fr 3128 %h %p"
Si le proxy nécessite une authentification :
ssh -D1111 -p443 moi@moi.mondomaine.fr -o"ProxyCommand corkscrew proxy.entreprise.fr 3128 %h %p votrelogin votremotdepasse"
(laissez la fenêtre ouverte)
(vous pouvez choisir le port que vous voulez au lieu de 1111)
Voilà, maintenant, localhost:1111 est un proxy SOCKS5 !
Vous pouvez le configurer dans les paramètres de votre système :

ou dans chacun des logiciels (comme firefox par exemple).
Toutes vos connexions passeront dans le tunnel ssh de manière sécurisée (entre votre pc client et votre pc fixe), et c'est votre pc fixe qui effectuera la connexion vers les sites que vous voulez accéder, mais lui, contrairement au proxy de l'entreprise, ne refusera pas les connexions 🙂
Pour éviter de passer toute la commande "ProxyCommand" en paramètre de ssh, vous pouvez la configurer définitivement pour un host particulier.
Pour cela, éditez
/etc/ssh/ssh_config
gksudo gedit /etc/ssh/ssh_config
Et tout à la fin du fichier, rajoutez (en adaptant) :
Host moi.mondomaine.fr
ProxyCommand corkscrew proxy.entreprise.fr 3128 %h %p
ou, si le proxy nécessite une authentification :
Host moi.mondomaine.fr
ProxyCommand corkscrew proxy.entreprise.fr 3128 %h %p votrelogin votremotdepasse
Maintenant vous pouvez simplement taper
ssh -D1111 -p443 moi@moi.mondomaine.fr
pour créer le tunnel.
De la même manière (avec corkscrew), vous pouvez monter vos répertoires distants en local avec sshfs à travers une connexion ssh sur https... et lire votre musique ou regardez vos vidéos à distance (si la connexion le permet).
Amusez-vous bien 🙂