Dernière mise à jour le 21/12/2012

La magie de SSH


SSH ou Secure SHell est un protocole surpuissant.

Non seulement il permet de se connecter a une machine distante et d en prendre le contrôle mais il permet aussi de s'octroyer les libertés de base quand on est au boulot et que le vilain admin reseau refuse d'ouvrir la plupart des services (chat, IRC, smtp, etc...).

SSH est un vrai protocole applicatif. D'ailleurs, je vous invite à lire sa page Wikipédia, on y apprend tout un tas de truc intéressant, pour peu qu'on ait quelque notions en réseaux informatiques.

Pour résumer, on crée une connexion chifrée (par clef symmétrique) entre deux hotes (un client et un serveur). Vous pouvez ainsi avoir accès à un shell à distance et ainsi piloter un poste tout aussi à distance.




Tunnel SSH (Source)

Par exemple, j'ai un serveur SSH (Openssh) qui tourne et ecoute sur le port 22 (sur le reseau interne). De toute machine du même reseau, je peux ouvrir un shell et administrer mon serveur. Pratique vu que mon serveur (eeebox B202) ne possède ni ecran, ni clavier ni souris.
Notez qu'il est possible, de "forwarder" (ie faire suivre ou transporter ou deporter) l'affichage de toute application graphique lancée sur le serveur distant. En gros l'application consommera les ressources de la machine distante mais s'affichera sur la machine locale, magique non? Un exemple tout simple: je lis mes mails grâce au client mail Mutt qui tourne sur mon serveur. Lorsque l'on m'envoit des photos, je peux les voir en déportant l'application feh sur ma machine cliente!
Sous GNU/Linux ca exigera de vous l'installation d'une serveur X sur le client et sur le serveur. Si la machine cliente est Windows, un petit serveur X portable comme X-Ming fera parfaitement l'affaire...

En ce qui me concerne, j'utilise volontier le serveur comme une passerelle qui m'octroye les droits que je n'ai pas sur mon poste windows XP du boulot! Impossible par exemple de faire de l'IRC, du jabber, du P2P, etc ...

Je ne peux pas trop en vouloir a l'admin reseau qui a reçu des directives et les applique. De plus je n'ai pas à faire tout ça sur mon lieu de travail. C'est pour cela que par respect, je n'en abuse pas et ne me connecte que très rarement "physiquement". Ca n'empeche cependant pas les programmes de continuer à tourner même sans que je sois connecté au serveur...

En fait comme toute fenetre de terminal, a moins d'utiliser la commande nohup, tout processus lancé à partir d'un shell en est un processus fils. Ce qui veut dire qu'une fois la fenêtre fermée, ainsi en sera le programme lancé. Par exemple, un client jabber en ligne de commande que j'aime bien: mcabber. Lancé il vous permet de vous connecter au réseau Jabber. Si vous fermez la fenetre vous perdez la connexion, et les reponses de vos interlocuteurs iront dans le vide (en fait pas vraiment car Jabber est un protocole intelligent...).

En résumé, le problème est: je me connecte du boulot sur mon serveur@home (lutix.org), je lance mcabber pour chatter avec mes potes et leur pose une question à laquelle il ne repondent pas tout de suite. Je suis malheureusement appelé en réunion et ne peux pas laisser ma connexion ouverte sous peine d'être "découvert" si quelqu'un s'assoit à mon bureau!

La parade existe et s'appelle GNU/screen. C'est en quelque sorte un générateur de terminaux virtuel. Vous lancer quelque chose sous screen, vous fermez ("détachez") screen, vous fermez votre client ssh (putty sous windows, ssh client sous linux), allez à votre réunion, et revenez à votre poste et récuperez votre screen, comme si vous aviez été devant votre poste tout ce temps là!!




[LutiX.org écrit sous Vim et herbergé @Home sur une Debian Squeeze par Apache et PHP5]