Le royaume de Eric Buist >> Informatique >> Quelques-unes de mes recherches personnelles >> Trucs et astuces >> Astuces spécifiques au DIRO
Me contacter Plan du site
Communication bidirectionnelle entre une machine personnelle et son compte DIRO Protéger son territoire virtuel >>

Communication bidirectionnelle entre une machine personnelle et son compte DIRO

La méthode de communication bidirectionnelle la plus connue que l'on apprend dès les premières semaines du programme d'informatique est sans nul doute Telnet ou SSH. Bien que Telnet soit plus facile à utiliser sous Windows puisqu'un client est intégré, ce protocole n'est pas recommandé pour des raisons de sécurité. Il vaut mieux utiliser SSH en utilisant par exemple PuTTY qui est gratuit. Grâce à ce protocole, il est possible de travailler à distance sur des fichiers se trouvant sur son compte ainsi que de consulter, via Pine, son courrier électronique. SSH voit ses limites lorsqu'on aimerait amener un fichier, comme un programme Java, de son compte vers sa machine personne ou vice versa. J'ai vu à quelques reprises des personnes non initiées tenter le coup par un copier/coller à partir de la fenêtre Telnet. Cette méthode est bonne pour de petites portions de données, comme le résultat d'une commande que l'on voudrait voir apparaître sur un site Web ou ailleurs. Mais pour un programme informatique, l'idée est moins bonne. Le programme peut facilement dépasser la page de Telnet et il faudra beaucoup de minutie et de vérifications ultérieures pour s'assurer d'avoir bien copié l'ensemble du programme. Finalement, cette méthode s'avère tout simplement inefficace, voire inutilisable, pour des fichiers binaires tels des circuits LogicWorks. Alors, que faire? Il existe quatre solutions possibles

La méthode des baskets

Ils nous ont tous dits qu'elle n'était plus employée en raison du réseau mais n'empêche qu'elle existe toujours et peut figurer parmi les seules solutions possibles si on ne dispose pas de connexion Internet ou bien d'un modem téléphonique ainsi que du temps pour apprendre à se brancher sur le pool de modems de Magellan. Non testée par moi-même, cette technique consiste tout simplement à emporter une disquette avec soi, à se brancher sur une machine du campus, à mettre la disquette dans le lecteur et à y copier ou y relire ce que l'on veut.

Pour accéder à la disquette, il faudra naturellement monter le système de fichiers floppy dans le Système de Fichiers Linux. Ce qui se fait par la commande mount /floppy. Avec un peu de chance, la diode du lecteur de disquette s'allumera brièvement, indiquant que Linux a lu le disque. Puis, vous pourrez accéder en lecture/écriture aux données de la disquette. Cette disquette se trouve dans /floppy. Ainsi, ls /floppy affiche ce qui se trouve sur la disquette. Il ne faudra pas oublier de taper umount /floppy avant de retirer la disquette, au risque de pertes de données! Voici un exemple de session visant à transférer un circuit LogicWorks provenant d'une disquette.

mount /floppy
cp /floppy/dev3no2.cct .
umount /floppy

Ce n'est qu'un exemple, je n'ai jamais exécuté cette copie.

Toute commande peut s'utiliser sur la disquette, sauf bien entendu chmod, à moins d'avoir une disquette en ext2fs. Mais que se passera-t-il si vous avez oublié de formater la disquette avant de l'amener? Dans ce cas, il faudra un peu plus de travail. On peut le faire sous Linux avec la commande fdformat /dev/fd0H1440. Mais cela ne fait pas tout! Il faut mettre en place un système de fichiers sur la disquette. On tapera, si le formatage a réussi, mkfs -t msdos /dev/fd0. Si on tapait mkfs -t ext2 /dev/fd0, on obtiendrait une disquette en format ext2fs. Elle pourrait être lue seulement sous Linux! Il ne faut pas oublier que ces commandes effaceront TOUT ce qui se trouvait sur la disquette!

Cette méthode vaut son pesant d'or au niveau simplicité, mais que se passera-t-il le jour où la disquette ne fonctionnera plus ou que vous l'aurez oubliée?

Transfert via e-mail

Pour employer cette technique, ainsi que la suivante, votre ordinateur personnel doit disposer d'un modem téléphonique ou d'un quelconque autre moyen de branchement à Internet (câble de Vidéotron, Sympatico Édition Haute Vitesse, ligne satellite, T1, ...). Avec un modem téléphonique, il faut un lien vers le réseau universitaire. Si vous ne disposez pas d'un abonnement à un fournisseur Internet, il est toujours possible de réaliser, avec un minimum d'efforts, une connexion PPP qui donnera accès au domaine umontreal.ca d'Internet, juste ce qu'il faut pour les transferts FTP, non? Pour plus d'informations sur le parc de modems, voir le site de la DGTIC. Ne disposant pas de modem téléphonique, je ne peux pas compléter cette section par des tests. Je considère ici que vous disposez d'un accès au réseau universitaire, soit par le pool de modems, soit par un Fournisseur d'Accès Internet.

Il vous faut aussi une adresse e-mail qui sera configurée en local, chez vous. Si votre Fournisseur d'Accès vous offre une telle adresse, il faudra la configurer dans un logiciel de courrier électronique tel Outlook Express. Notez qu'il est tout aussi possible de se servir de son adresse IRO pour ce genre de choses, à condition, bien entendu de savoir la configurer dans le logiciel de courrier sur l'ordinateur local! Faute de ne pas posséder une telle adresse, ou de ne pas savoir ou vouloir configurer un logiciel de courrier électronique, il vous faudra utiliser une adresse Hotmail. Si vous disposez déjà d'une telle adresse, vous pourrez l'utiliser, sinon vous pouvez en obtenir une gratuitement. Toutefois, avant de penser transférer des fichiers vers votre compte, il vous faudra désactiver l'anti-spam mis en place par les administrateurs du DIRO dans votre compte. Cette fonction empêche tout courrier venant de Hotmail de se rendre dans votre boîte aux lettres DIRO. Il vous faudra donc, sur votre compte, taper quelques commandes.

cd /mail/usager
pico (ou emacs, ou n'importe quoi d'autre) .procmailrc
    

Dans ce fichier, il faut placer un dièse (#) devant la ligne traitant de INCLUDERC, cela va désactiver la "protection" et va permettre au courrier Hotmail de passer.

La méthode consiste simplement à joindre un fichier à votre e-mail afin que le destinataire, donc vous-même, puissiez le recevoir sur l'autre machine. Ainsi, vous enverrez de votre machine domestique vers usager@IRO.UMontreal.CA puis vous vous brancherez en Telnet pour aller chercher le fichier qui sera ainsi passé sur votre compte. Cette méthode permet aussi de transférer des fichiers à votre coéquipier dans le cas d'un travail d'équipe. Elle peut aussi servir à envoyer des fichiers d'un compte DIRO à un autre. Il revient ensuite à la personne recevant le fichier de le sauvegarder où bon lui semble ou de le supprimer. Cette technique ne viole donc pas la sécurité du réseau en permettant à n'importe qui d'écrire n'importe où.

Cette méthode est toutefois inefficace, car elle implique deux manipulation pour le transfert, soit joindre le fichier puis le sauvegarder à partir du logiciel qui le recevra, soit Pine ou votre logiciel sur votre machine, dépendant du sens du transfert. De plus, nombreux sont ceux qui ne savent pas joindre un fichier à un message.

Transfert via FTP

Cette méthode est la plus sûre, car elle permet de faire transiter tout type de fichiers. Le plus simple consiste à utiliser un client FTP, tel CuteFTP ou WS_FTP. J'utilise ce client qui semble même effectuer la conversion du fichier ASCII, m'évitant de petits problèmes de format de fichiers. Dans un client à interface graphique, il suffit d'entrer le nom du serveur, soit phobos.iro.umontreal.ca ou deimos.iro.umontreal.ca, le nom d'usager et le mot de passe dans les champs appropriés.

Connexion à Phobos par FTP

Dans cette fenêtre, j'ai remplacé mon mot de passe par des caractères aléatoires avant la capture d'écran afin que personne ne puisse deviner le nombre de caractères de mon vrai mot de passe! :)

Connexion effectuée avec succès

Ici, j'ai réduit la taille de la fenêtre du programme afin de permettre un affichage correct dans le navigateur.

On peut aussi faire la même chose sans un tel programme, en mode texte, avec FTP. Voici donc un dialogue entre ce programme primitif et moi, en train de tenter de télécharger un petit programme Java. On peut appeler FTP depuis la ligne de commandes DOS ou depuis la commande Exécuter du Menu Démarrer.

ftp> open phobos.iro.umontreal.ca
Connecté à phobos.iro.umontreal.ca.
220 phobos.IRO.UMontreal.CA FTP server (Version wu-2.6.0(1) Fri Jun 23 09:17:44
EDT 2000) ready.
Utilisateur (phobos.iro.umontreal.ca:(none)) : buisteri
331 Password required for buisteri.
Mot de passe :
230 User buisteri logged in.
ftp> lcd c:\data
Dossier local maintenant C:\Data.
ftp> cd tp/ift1010
250 CWD command successful.
ftp> cd tp4
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
Note.java
226 Transfer complete.
ftp : 11 octets reçus dans 0.05Secondes 0.22Ko/sec.
ftp> ASCII
200 Type set to A.
ftp> get Note.java
200 PORT command successful.
150 Opening ASCII mode data connection for Note.java (1673 bytes).
226 Transfer complete.
ftp : 1741 octets reçus dans 0.00Secondes 1741000.00Ko/sec.
ftp> BINARY
200 Type set to I.
ftp> bye
221-You have transferred 1741 bytes in 1 files.
221-Total traffic for this session was 2420 bytes in 2 transfers.
221-Thank you for using the FTP service on phobos.IRO.UMontreal.CA.
221 Goodbye.

Fiou! Heureusement qu'il y a des programmes avec interface graphique! Ici, la commande ASCII est importante, car elle dit au programme de convertir les retours chariot du programme, évitant des surprises lors de l'ouverture dans un éditeur de texte. Il est maintenant possible d'ouvrir le fichier et de travailler dessus, le compiler et le tester.

Maintenant, il serait peut-être intéressant de copier le fichier sur le serveur Deimos ou Phobos, les deux reviennent au même, ne l'oublions pas. Il est possible de le faire avec FTP, en remplaçant la commande get par put. Il est ensuite possible de se brancher par Telnet pour vérifier si le fichier est bien là. Le transfert peut aussi bien être effectué à l'aide d'un programme avec interface graphique, soit dit en passant.

Il y a une considération importante au niveau sécurité qu'il est bon de se souvenir lors d'un transfert FTP de sa machine personnelle vers le serveur. En effet, dans la perspective de la publication Web, le serveur FTP attribue au fichier entrant des permissions de lecture à tous. Cela peut amener de légers désagréments comme une lecture, ou une copie, mal intentionnée. Il faudra donc apprendre à se protéger. De plus, si vous utilisez un client à interface graphique, il est possible de mémoriser son mot de passe. Puisque vous travaillez de chez vous, rien ne vous empêche de le faire. Sachez toutefois qu'une personne expérimentée pourrait, éventuellement, trouver et décrypter le fichier contenant le mot de passe! Si vous soupçonnez une telle personne d'avoir pénétré votre système, physiquement ou virtuellement, n'hésitez pas à changer votre mot de passe avant qu'il ne soit trop tard...

Transfert sécurisé

Le protocole SSH fournit un canal de transfert crypté qui peut être utilisé pour d'autres tâches que l'accès à un terminal. Il est possible de copier des fichiers par le biais de SSH, et cela de deux façons. SCP permet de transférer des fichiers d'une façon semblable à la commande cp de Linux tandis que SFTP permet d'effectuer des sessions de transfert FTP par le biais de SSH.

Malheureusement, les outils SSH ne sont pas disponibles en standard sous Windows. Outre installer Cygwin, il est possible d'utiliser PuTTY pour ce genre de tâches. Le site Web de PuTTY propose, en plus de PuTTY, les utilitaires PSCP et PSFTP.

La commande scp s'utilise à peu près comme cp sous Linux. Par exemple, pour copier le fichier rapport.txt dans le répertoire courant vers votre répertoire DIRO, vous utiliseriez

scp -C rapport.txt usager@phobos.iro.umontreal.ca:
    

L'option -C permet de compresser les données lors du transfert, ce qui réduit la quantité d'informations à transmettre. Après les deux-points, il est possible de spécifier un chemin relatif par rapport à votre répertoire HOME de votre compte. Il est également possible de copier plusieurs fichiers, exactement comme avec cp et vous pouvez faire l'inverse, c'est-à-dire copier un fichier de votre compte DIRO vers votre système. La commande vous demandera votre mot de passe à chaque appel, elle est donc intéressante uniquement si vous n'avez que peu de fichiers à copier ou des répertoires entiers.

La commande sftp prend comme argument le nom de la machine à contacter ainsi que l'usager. Par exemple, sftp -C usager@phobos.iro.umontreal.ca établira une connexion compressée. Lorsque le contact est établi avec le serveur, le transfert se déroule comme avec FTP, à l'exception qu'il sera beaucoup plus difficile pour une personne tierce d'intercepter vos données!

Quand le terminal ne suffit plus

Par Telnet ou SSH, il est certes possible d'accéder à votre compte DIRO et d'y effectuer des tâches, mais cela ne fonctionne que si vous vous abstenez à du mode texte. Si vous prenez un cours exigeant l'utilisation d'un logiciel commercial avec interface graphique, outre travailler uniquement depuis l'université, il existe une alternative: installer un serveur X sur votre machine!

Il existe plusieurs logiciels serveurs X dont le plus simple à mettre en oeuvre (mais le moins performant) est WeirdX. Ce serveur en Java est gratuit et fonctionne assez bien. Une seconde solution gratuite, plus performante mais gourmande en espace disque, consiste à installer Cygwin avec XFree86 pour Windows. Le serveur fonctionne assez bien, mais j'ai éprouvé des problèmes avec la saisie des accents. Une troisième solution réside dans X-Win32 de la compagnie StarNet. Ce serveur X commercial semble bien fonctionner et ne nécessite que peu d'espace disque comparativement à la solution Cygwin.

Lorsque le serveur X est installé et configuré, il reste à le mettre en fonction. Il alloue alors un port TCP et peut recevoir des requêtes. Il faudra configurer votre serveur X pour qu'il accepte des requêtes depuis Phobos ou Deimos et la procédure dépend du serveur X mis en place. Ensuite, établissez une connexion SSH sur votre compte et configurez la variable d'environnement DISPLAY: setenv DISPLAY votreip:S.0 où S est un numéro configuré dans le serveur. Par défaut, Cygwin utilise 0 tandis que WeirdX utilise 2. Lorsque la variable DISPLAY est bien définie, démarrer une application X fera surgir son contenu à l'écran.

Cette technique ne fonctionne pas toujours, comme par exemple si vous utilisez un partage de connexion Internet. Heureusement, il existe une alternative autre que de n'accéder à X uniquement depuis la machine branchée directement à Internet. SSH offre une fonctionnalité de redirection de ports appelée tunneling. Par exemple, votre client SSH (PuTTY par exemple) peut ouvrir un port TCP sur votre machine et lorsqu'un branchement est établi depuis ce dernier, il envoie les informations à travers le canal SSH et le serveur SSH ouvre un port correspondant de son côté. Le tunneling offre une solution au problème du serveur X avec connexion Internet partagée. Sous PuTTY, après avoir configuré votre connexion et indiqué d'utiliser SSH, allez dans la section SSH, sous-section Tunnels. Cochez la case Enable X11 forwarding et laissez localhost: comme serveur. Vous devrez remplacer 0 par 2 si vous utilisez WeirdX configuré par défaut. Ensuite, établissez la connexion SSH proprement dite puis démarrez le serveur X. Lorsque vous lancerez des applications X, leur contenu apparaîtra à l'écran.

Malheureusement, cette approche est très lente, peu importe le serveur utilisé. Elle peut servir à dépanner, mais le mieux sera toujours, si possible, d'installer chez vous le logiciel utilisé.