Le but de ce document est d’expliquer les tunnels SSH. C’est Ă dire comment utiliser SSH pour faire passer diffĂ©rents protocoles, ce qui permet de sĂ©curiser la communication (une sorte de VPN software). Si vous souhaitez plus de dĂ©tails sur les diffĂ©rentes possibilitĂ©s, cet article de Buddhika Chamith vous Ă©clairera : SSH Tunneling Explained.
Quand on se connecte Ă Internet depuis un lieu public et si ce lieu de connexion ne permet pas dâaccĂ©der Ă des ports particuliers dâun serveur (rĂšgles de firewall restrictives), il est possible dâutiliser un serveur intermĂ©diaire sur lequel on a un compte utilisateur et qui fait tourner un serveur ssh. Câest ce serveur qui se connectera au serveur dĂ©sirĂ©. Cette solution va aussi permettre de chiffrer la communication entre le point dâaccĂšs et le serveur intermĂ©diaire.
Pour rĂ©aliser cela, on va utiliser un tunnel SSH. Il faut donc que lâon ai accĂšs au port 22 du serveur intermĂ©diaire, mais dans 90% des cas les firewalls laissent sortir le trafic sur ce port.
Le principe
Il faut crĂ©er une connexion ssh entre le pc client et le serveur intermĂ©diaire. Cette connexion (le tunnel donc) connectera un port du pc client au serveur intermĂ©diaire. Celui-ci va lire tout ce quâil reçoit depuis cette connexion et re-expĂ©dier le tout vers le serveur destinataire.
attention : sous Linux, on ne peut pas connecter le tunnel sur un port local privilĂ©giĂ© si on nâest pas root. Il faut donc prendre un port au dessus de 2000.
Exemple
Je veux lire mes mails par un accĂ©s imap. Mon serveur imap est imap.mail.com et je lâinterroge sur le port 143 (le porte par dĂ©faut IMAP). Mais le firewall ne laisse pas sortir les connexions vers le port 143.
Je vais donc Ă©tablir un tunnel SSH entre le pc que jâutilise et un serveur sur lequel jâai un accĂ©s ssh. Ce serveur sâappelle monserveurssh.com et jâai un compte utilisateur de login moncompte. Je vais connecter le tunnel sur le port 2000 de mon pc client, comme suit :
ssh -2NfC -L2000:imap.mail.com:143 moncompte@monserveurssh.com
Cette commande ne me connecte pas sur le serveur intermĂ©diaire, mais me rend la main de suite grĂące a lâoption -f combinĂ©e avec lâoption -N. Lâoption -2 câest pour demander Ă ssh dâutiliser le protocole v2 et lâoption -C câest pour demander de compresser le tunnel.
Il ne me reste plus quâĂ brancher mon client mail sur le port 2000 de localhost, et je pourrai lire mes mails, comme si jâĂ©tais connectĂ© directement au serveur de mails.
Un détail sécurité
Quand je créé des comptes utilisateurs sur mon serveur juste pour permettre du port forwarding je ne donne pas le droit de connexion au serveur. Pour cela, dans le fichier /etc/passwd je remplace le shell du compte par /sbin/nologin. Ainsi la personne qui a ce compte peut créer des tunnels SSH mais elle ne peut pas se connecter au serveur.
Sous Windows
En utilisant Cygwin et le client ssh fourni avec, cela fonctionne trĂšs bien. Putty permet aussi dâĂ©tablir des tunnels pour ceux qui sont rĂ©fractaires Ă la ligne de commande.
Quelques liens sur le sujet
- Remote Desktop and SSH tunneling,
- X over SSH2,
- Documentation sur Putty en francais avec une section sur le transfert de ports
Faire un backup avec rsync
On peut utiliser ssh pour faire un backup dâune machine distante (pratique pour conserver une copie dâun site web, en ne tĂ©lĂ©chargeant que ce qui a changĂ© depuis le dernier backup) avec rsync
rsync -v -u -a --rsh=ssh --stats user@serveur.net:/chemin/dossier/distant/a/sauver /chemin/dossier/local
Est-il possible de vous prendre deux ou trois paragraphes pour un site web ?
Oui, vous pouvez reprendre ce qui vous intéresse.