TP Putty
TP Putty
TP Putty
TP 7
Réseaux 1ère Année
IUT Info Aix-en-Provence © Cyril Pain-Barre
I. Introduction à SSH
Le protocole SSH (pour Secure SHell) est le remplaçant de rsh (remote shell) qui
correspond grosso-modo à telnet. Comme nous le verrons, SSH permet bien plus de
choses que telnet. Il permet aussi de transférer des fichiers de façon sécurisée
(fiable et cryptée) via les protocoles scp et sftp.
L'utilitaire client ssh existe sous Linux et est assez bien documenté. Pour le
moment nous nous concentrerons sur les clients gratuits Windows que
sont Putty et SSH Secure Shell Client.
I.1. Putty
Putty est un client SSH développé par Simon Tatham. La site officiel
de Putty est ici. On peut y télécharger la dernière version. Les utilitaires de la
suite Putty se trouvant ici sont peut-être un peu anciens (à vérifier) mais tout à fait
fonctionnels. Ils sont regroupés comme une archive zip ici. Les différents utilitaires
de cette suite sont :
Il existe plusieurs méthodes pour ouvrir une session SSH. Les plus courantes
sont l'utilisation de son mot de passe, ou l'utilisation d'une paire de clés. La seconde
solution est la plus sécurisée. Nous allons voir comment créer des clés et les
utiliser. Auparavant, rapatriez les utilitaires putty sur votre PC.
Lancer l'utilitaire puttygen et cocher le bouton radio SSH2 RSA puis cliquer
sur Generate.
L'utilitaire demande alors de bouger la souris de manière aléatoire pour
pouvoir créer la clé.
Une fois la paire de clés générée, il faut renseigner le champ comment et
les passphrases. Le champ comment est libre et sera affiché à chaque fois
que la passphrase vous sera demandée. On peut donc mettre une indication
pour se souvenir de la passphrase. La passphrase protège la clé privée et est
très importante. Elle ne doit pas être courte, doit comporter des ponctuations
et alterner des minuscules et des majuscules :
Sauver les clés publiques et privées sur le PC pour constituer votre
trousseau.
Ne pas sortir de la fenêtre puttygen car on va en avoir besoin.
C'est un autre utilitaire permettant de se connecter par SSH. Le site officiel est
celui-ci : http://www.ssh.com/. Le site propose en téléchargement une version
gratuite (3.2) à usage non commercial. On la trouve dans la
rubrique Download puis Non-commercial Versions. Voici un lien direct pour
télécharger le client 3.2.9. Sur les PC, il y a déjà une version d'installée.
I.3. WinScp
Cet utilitaire est un client scp/sftp graphique. Il permet donc de transférer des
fichiers à distance en utilisant simplement une connexion SSH établie pour
l'occasion. Le site officiel est celui-ci http://winscp.net/eng/index.php. Une version
opérationnelle se trouve ici.
I.4. FileZilla
II.1. Principe
où, le client SSH utilise le port TCP 12345 sur arthur . La connexion SSH est
sécurisée : à part une attaque de type "Man in the middle" à l'établissement de la
connexion, le trafic sur cette connexion n'est pas déchiffrable par une tierce
personne.
Cependant on peut utiliser la connexion SSH établie afin de faire "passer" une ou
plusieurs autres connexions. Cela est possible en créant un tunnel à travers la
connexion SSH :
Sur la figure, le tunnel relie le port TCP 55555 d'arthur au port TCP 110
de merlin. Tout se passe comme si un serveur POP3 était actif sur arthur, en
écoute sur le port 55555. En général, ce serveur n'accepte que des connexions
locales (pas d'une machine autre qu'arthur) et utilise alors l'adresse 127.0.0.1. On
peut toutefois configurer le tunnel pour que le serveur accepte des connexions de
machines distantes (il utiliserait alors son adresse IP). Pour le moment, on
considère que le serveur n'accepte que des connexions locales.
II.2.a. Putty
Putty, comme tout client SSH qui se respecte, permet de mettre en place un
tunnel. Cela se fait avant d'ouvrir une session SSH. Pour cela, en plus des
informations nécessaires au démarrage d'une session SSH comme vu
précédemment, il faut renseigner la page Connection SSH Tunnels. Dans la
rubrique "Add new forwarded port:", il faut indiquer le port local à rediriger dans
"Source port", et le serveur destination dans "Destination" comme ceci :
Supposons que le serveur POP3 n'est pas hébergé par merlin mais
par guenievre et qu'un firewall empêche arthur d'accéder à guenievre. La
solution consiste à établir une session SSH entre arthur et merlin et
d'utiliser cette session pour réaliser un port forwarding depuis (par exemple)
le port 55555 d'arthur vers le port 110 de guenievre (atteint via merlin) :
Pour cela, il suffit d'indiquer en destination guenievre:110 (ou le nom
complet ou l'adresse IP à la place de guenievre).
On peut mettre en place plusieurs tunnels sur une même connexion SSH.
On peut mettre bout à bout les tunnels.
Il est possible de mettre en place un tunnel sans que la session SSH n'ouvre
un terminal.
La mise en place d'un tunnel se fait aussi avant d'ouvrir la session SSH. On peut
le faire pour un profil précis en l'éditant par le menu File Profiles Edit
Profiles et en choisissant le profil puis l'onglet Tunneling :
On peut aussi réaliser le tunnel sans passer par un profil, directement par la
rubrique Tunneling de la fenêtre Settings accessible depuis le menu Edit :
II.2.c. Utilitaire ssh (sous Linux)
Sous Linux, il existe l'utilitaire ssh (utilisé au cours du TP 6). Celui-ci admet un
grand nombre d'options. Celle permettant de mettre en place un tunnel est l'option -
L local_port:machine_distante:port_machine_distante.
Dans notre cas, si le nom d'utilisateur sur merlin est toto, alors la ligne de
commande est :
[cyril@arthur ~]$ ssh [email protected] -L 55555:merlin:110
[toto@merlin ~]$ @C
ssh> -L 55555:merlin:110
Forwarding port.
[toto@merlin ~]$ @?
Supported escape sequences:
@. - terminate connection
@C - open a command line
@R - Request rekey (SSH protocol 2 only)
@^Z - suspend ssh
@# - list forwarded connections
@& - background ssh (when waiting for connections to terminate)
@? - this message
@@ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
[toto@merlin ~]$ @#
The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 4/5)
Le client de messagerie doit être configuré pour utiliser le tunnel afin de relever
le courrier situé sur merlin. Pour cela, il faut indiquer que le serveur POP3 est situé
sur la machine locale et écoute sur le port 55555 (on peut bien entendu utiliser un
autre port ;-)). Sur Outlook Express, après avoir créé un compte de messagerie, il
faut que le serveur de courrier entrant soit localhost. On le vérifie dans le
menu Outils Comptes puis en ouvrant les Propriétés du nouveau compte,
onglet Serveurs :
On entre le port local (qui est par défaut 110 pour POP3) dans l'onglet Avancé :
II.3. Exercices
2. En utilisant SSH Secure Shell Client, faire la même chose mais en passant
par la machine oralinux.
Le rôle de X-Win32 est de dessiner des fenêtres (les clients) qui ont été
exécutées sur un ordinateur distant (généralement allegro pour nous), de gérer les
événements claviers et souris qui se produisent sur la fenêtre X-Win32, de rendre
compte aux clients des événements qui sont leur sont survenus (clic de souris,
touche tapée, etc.) et de redessiner les fenêtres lorsque les clients le lui demandent
(suite à l'insertion de caractères, au tracé d'un graphique, etc.).
soit X-Win32 est configuré pour fonctionner en mode Query XDCMP sur
allegro, auquel cas une demande de connexion est adressée directement à
allegro qui lance alors un client X qui gère l'invite de connexion. En réalité,
il s'agit d'un serveur xdm (X Display Manager) qui se comporte comme un
client. À ce stade, notre serveur doit afficher la fenêtre du client et lui
renverra les informations tapées. Si le client est satisfait de ce qui est tapé,
une véritable session est lancée contenant un gestionnaire de fenêtres (en
principe GNUStep), et les différentes fenêtres que vous avez souhaité lancer
au démarrage. Sur GNUStep, la description de ces fenêtres est sauvée dans le
fichier ~/GNUstep/Defaults/WMState. Comme dit précédemment, chaque
fenêtre est un client X. Le gestionnaire de fenêtre est lui-même un
client X dont le rôle est de proposer un certain bureau ainsi qu'un "Look and
Feel" (une apparence des fenêtres).
soit X-Win32 est configuré pour fonctionner en mode broadcast XDCMP.
Dans ce cas, il diffuse une requête (donc en broadcast) demandant s'il existe
des machine qui ont un serveur XDM prêt à accepter une tentative de login.
Une liste de machines est alors dressée. Lorsqu'on en choisi une, tout se
passe comme le mode Query XDCMP.
Dans les deux cas, il faut être autorisé à afficher des fenêtres sur le serveur. X-
Win32 gère ceci de façon transparente en émettant un MAGIC-COOKIE que les
clients doivent utiliser dans leurs échanges avec le serveur.
Une autre solution est d'indiquer au serveur X les machines qui sont susceptibles
d'être la source de clients X qui lui demanderont d'afficher des fenêtres. Dans X-
Win32, cela se fait avant de lancer le serveur, en précisant les machines dans X-
Config, rubrique Sécurité.
Sous Linux (et Unix), lorsqu'un serveur X est actif, on indique ces machines par
la commande xhost :
Bien entendu, utiliser xhost ou l'autorisation par X-Win32 est très dangereux car
cela permet à n'importe qui de lancer des applications sur son serveur X, depuis la
machine autorisée.
Seule l'utilisation des MAGIC-COOKIE permet un niveau de sécurité suffisant.
Cette partie explique comment utiliser X-Win32 (ou n'importe quel serveur X)
de façon à lancer des fenêtres sur allegro depuis chez soi et les afficher sur son
ordinateur préféré :-) (certains diront mieux vaut tard que jamais lol).
Bien que la méthode xhost soit possible, il faut l'éviter car même si l'on ne craint
pas (quelle erreur !) que quelqu'un lance une application sur notre machine, il faut
savoir que la connexion entre le client et le serveur X est en clair. Autrement dit, on
peut observer tous les caractères qui sont tapés sur la fenêtre en question...
La méthode indiquée ici est bien plus sécurisée car nous allons utiliser un
tunnel SSH pour rediriger ces connexions. Cela se demande par la redirection X11.
Il n'y a pas de session X-Win32 en tant que telle à établir. Tout se passe en
arrière plan pour X-Win32. Il faut d'abord lancer l'utilitaire X-Config et dans la
partie Mode fenêtre de l'onglet Fenêtre, choisir Multiple (il y aura une fenêtre
Windows par client X lancé) comme ci-dessous :
Puis, dans l'onglet Sécurité, il faut ajouter localhost dans la liste des
clients xhost autorisés, et cocher les cases Contrôle d'accès et Utiliser XAuth pour
activer les MAGIC-COOKIES :
Cliquer ensuite sur OK pour sauver les changements. Lancer X-Win32 sans
lancer de session.
L'icône X-Win32 apparaît alors dans les applications systèmes en bas à droite de
l'écran :
III.3.b. Configuration d'un client SSH (Putty) pour la redirection X11
Si vous pouvez utiliser X-Config sur votre poste, réalisez un forward X11 et
lancez des fenêtres depuis allegro.