CSC 3102 – Introduction aux systèmes d’exploitation

Portail informatique

La commande ssh (∼30mn – hors présentiel)

Cet exercice a pour but de vous présenter la commande ssh. Cette commande vous permet de lancer un shell sur une machine distante de façon sécurisée. Elle vous sera utile pour travailler sur les machines de l'école lorsque vous n'y êtes pas physiquement. Le but de cet exercice n'est pas de vous faire un cours complet sur ssh, pour cela, nous invitons à consulter le cours se trouvant ici.

Les salles machines sont toutes connectées derrière une passerelle nommée ssh.imtbs-tsp.eu. Cette passerelle laisse passer toutes les connexions sortantes mais bloque les connexions entrantes. Dans ce TP, nous allons faire « comme si » nous étions à l'extérieur du réseau de l'école : nous allons nous connecter à la passerelle avant de nous connecter à une des machines.

De fait, si vous êtes connectés sur un réseau interne de l'école (en filaire, ou par Eduroam en Wifi), l'accès à la passerelle se fait avec le nom court ssh, au lieu de ssh.imtbs-tsp.eu.

Ouvrez un terminal et lancez la commande hostname. Quel est le nom de votre machine ? À Télécom SudParis, la nomenclature est : a001 indique la salle (A001-002), et 08 indique le numéro de la machine.
$ hostname a001-08

Avant d'aller plus loin, lancez la fabuleuse commande xeyes. Cette commande affiche une fabuleuse paire d'yeux qui suivent votre pointeur. Si vous ne l'avez pas sur votre ordinateur, ce n'est pas grave : après la connexion par SSH dans les questions suivantes, vous pourrez la lancer !

Fermez le processus xeyes puis utilisez la commande ssh pour vous connecter à la passerelle. Pour vous guider, vous devriez écrire ssh mon-login@ssh.imtbs-tsp.eu pour vous connecter (pensez à utiliser la commande man pour savoir comment utiliser la commande ssh de façon plus avancée).

Comme mentionné plus haut, si vous êtes déjà sur un réseau interne de l'école, utilisez ssh mon-login@ssh.

Qu'affiche maintenant la commande hostname ?

Cette remarque est importante, conservez ces informations quelques part, car vous en aurez très probablement besoin plus tard dans vos études ou votre vie professionnelle. Comme vous vous connectez pour la première fois à la passerelle, ssh vous pose une question. Avant de répondre « yes », lisez attentivement ce que vous raconte ssh. De façon générale, si l'authenticité d'une machine ne peut pas être établie, cela signifie que :
  • la machine sur laquelle vous vous connectez n'est pas celle que vous croyez. Le service qui trouve une machine à partir de son nom a très probablement été piraté. Si vous avez un doute, fuyez pauvres fous ! Contactez d'urgence l'administrateur de la machine et surtout, ne répondez pas yes aveuglément.
  • la machine sur laquelle vous vous connectez vient d'être mise à jour. Dans ce cas, son identité a changé. Après vous être assuré(e) que c'était le cas, vous pouvez détruire l'entrée correspondante dans le fichier ~/.ssh/known_hosts en lançant ssh-keygen -R hostname, où hostname est le nom de la machine sur laquelle vous vous connectez. Vous pourrez ensuite vous reconnecter comme si c'était une nouvelle machine;
  • vous vous connectez pour la première fois à la machine. La procédure devrait être d'obtenir son identité par un autre canal (par exemple en mains propres de la part de l'administrateur) et de la comparer à celle qui vous est affichée par ssh.
Dans le contexte de cet exercice, et depuis le réseau local de l'école, vous pouvez raisonnablement répondre yes sans danger. Vous pouvez néanmoins vérifier l'authenticité de la machine en regardant ici.
ssh ssh.imtbs-tsp.eu
$ hostname elaphe.int-evry.fr
Il est possible que hostname vous indique un autre nom de machine car, de façon à équilibrer la charge, plusieurs machines peuvent répondre au doux nom de ssh.imtbs-tsp.eu, à savoir ssh1 (nom d'hôte « anaconda ») ou ssh2 (nom d'hôte « taipan »).

Lancez la commande xeyes. Que se passe-t-il ?
La commande ne démarre pas et affiche un message d'erreur « Error: Can't open display: ».

Techniquement, votre shell s'exécute sur l'une des passerelles du campus alors que votre écran est connecté à votre machine. Le shell de la passerelle est incapable de trouver le serveur graphique de votre machine, ce qui explique que la commande xeyes ne puisse pas se connecter.

Déconnectez-vous de la passerelle avec la commande exit, puis reconnectez-vous à la passerelle en utilisant cette fois l'option -Y de ssh. Cette option demande explicitement à ssh d'indiquer au shell de la passerelle où se trouve le serveur graphique.

Que se passe-t-il lorsque vous lancez xeyes ?

$ ssh -Y thomas_g@ssh.imtbs-tsp.eu thomas_g@ssh.imtbs-tsp.eu's password: Last login: Tue Jun 28 13:44:53 2016 from 157.159.39.4 [thomas_g@elaphe ~]$ xeyes
xeyes se porte maintenant comme un charme.

Connectez-vous avec ssh -Y à une des machines des salles de TP à partir du shell s'exécutant sur la passerelle. Ces machines ont des noms prévisibles de la forme salle-num, où salle est un numéro de salle et num un numéro de machine (par exemple a001-08). Lancez un xeyes à distance. Où apparaît xeyes ?
Sur votre machine.

Déconnectez-vous de la machine de salle de TP et de la passerelle en saisissant exit deux fois. Vous devriez donc maintenant travailler sur votre machine. Vérifiez que c'est le cas en lançant la commande hostname. Si vous voyez que vous n'êtes pas en train de travailler sur votre machine, saisissez exit autant de fois que nécessaire.
$ exit $ exit $ hostname a001-08

Nous allons maintenant apprendre à copier des fichiers d'une machine à une autre en utilisant le protocole SSH. Avant de commencer, de façon à vous remettre en jambe, copiez le fichier /etc/passwd de votre machine dans votre répertoire de connexion (répertoire « ~ ») en utilisant la commande cp.
$ cp /etc/passwd ~ $

Pour copier un fichier d'une machine à une autre, il faut remplacer la commande cp par la commande scp. Cette commande fonctionne à peu près comme la commande cp mais permet de spécifier une machine cible ou une machine destination en préfixant un des chemins par « mon-login@nom-machine: » (par exemple, avec le chemin thomas_g@srvp1.telecom-sudparis.eu:~/movies/chat-noir-chat-blanc.avi).

Copiez le fichier /etc/passwd de la machine ssh.imtbs-tsp.eu dans votre répertoire de connexion.
$ scp thomas_g@ssh.imtbs-tsp.eu:/etc/passwd ~ thomas_g@ssh.imtbs-tsp.eu's password: passwd 100% 2793 2.7KB/s 00:00 $
Ce qu'il faut retenir : lorsque vous travaillez à distance, vous devez d'abord vous connecter à une passerelle de l'école avec ssh -Y ssh.imtbs-tsp.eu. Si par hasard ssh vous indique que la machine ne peut pas être authentifiée alors que vous vous y étiez déjà connecté, méfiez-vous, l'identité de la machine a peut-être été usurpée. Ensuite, il vous est déconseillé de travailler directement sur la passerelle, afin d'éviter un possible engorgement. Connectez-vous donc à une autre machine, en sachant que les machines s'appellent salle-num, où salle est un numéro de salle et num un numéro de machine (par exemple a001-08).