Pour permettre à votre invité·e de se connecter à votre conteneur, il va falloir ajouter sa clef publique SSH dans le fichier .ssh/authorized_keys de son HOME.
Comment être sur·e que vous avez bien reçu la bonne clef ? On va supposer que le service informatique de Paris 13 n'est pas digne de confiance, et que toute information partagée par mail ou sur mattermost aurait pu être modifiée à la volée.
Ainsi, puisque les clefs publiques ont circulé par mail, il faut vérifier qu'elles ont bien transité sans avoir été modifiées en utilisant un autre canal de communication. Pour vérifier l'intégrité d'une clef de chiffrement, on peut utiliser son fingerprint (fr: empreinte digitale) qui n'est autre que son hash (fr: "condensat"), plus court à vérifier.
Note importante : idéalement, les fingerprints sont échangés lors d'une rencontre physique.
Si vous ne pouvez pas vous rencontrer physiquement, on va limiter les risques d'interception en faisant circuler la clef publique et son fingerprint par des canaux différents, gérés par des entités différentes, par exemple le système de visio https://jitsi.lipn.univ-paris13.fr/ (qui est géré par le lipn et pas par la DSI de l'université).
Pour obtenir le fingerprint d'une clef publique SSH, il suffit d'utiliser la commande :
$ ssh-keygen -l -f <chemin_vers_la_clef_publique>
.ssh/authorized_keys du HOME de votre invité·e..ssh/ et le fichier .ssh/authorized_keys de votre invité·e lui appartiennent (chown) et que personne d'autre qu'elle ne peut y accéder (chmod).Seulement voilà, lorsque votre invité·e va se connecter à votre conteneur, il se pourrait qu'une machine malveillante qui se trouve sur la route entre la machine locale de votre invité·e et votre conteneur et se fasse passer pour votre conteneur.
Il faut donc que votre invité·e puisse vérifier que sa machine se connecte bien à votre conteneur (et pas un fake). Pour cela, il faut lui faire parvenir le fingerprint des clefs publiques du serveur SSH de votre conteneur qu'il·les devront vérifier. Les paires de clefs du serveur SSH se trouvent dans le répertoire /etc/ssh/ et leur nom est de la forme ssh_host-*.pub.
Remarque : plusieurs algorithmes cryptographiques sont proposés par le serveur SSH de votre conteneur pour permettre aux clients SSH de différentes générations d'authentifier le serveur, selon les cryptos disponibles. Il y a donc plusieurs paires de clefs correspondant à ces différents algorithmes cryptographiques (actuellement RSA, ECDSA, ED25519).
Remarque : une incantation permettant d'obtenir d'un seul coup les fingerprints de toutes les clefs publiques d'un serveur SSH se trouve dans le grimoire des cultes du cargo (sur le wiki). Vous pouvez l'invoquer pour gagner du temps, mais vous devez avoir conscience que vous exécutez une commande qui n'est pas sous votre contrôle. Si vous ne voulez pas tomber du côté obscur de la dépendance aux formules incompréhensibles (et potentiellement dangereuses), il vous faudra faire quelques man, en particuler comprendre le paragraphe "Substitution de processus" du manuel de bash (l'un des manuels les plus difficiles d'accès).
Note importante : le contenu des clefs privées du serveur SSH de votre conteneur ne doivent jamais être montrées (si vous voulez voir à quoi elles ressemblent, faites ça chez vous, dos au mur).
var/log/auth.log), ainsi que le résultat des commandes last, who et ps aux.wall vous pouvez envoyer un message à l'ensemble des personnes connectées sur votre conteneur. C'est très utile pour demander à tout le monde de se déconnecter avant une opération de maintenance par exemple. Si un user non-privilégié fait la même chose, sur quels terminaux sera affiché le message ? (indication : faites un ls -l
/dev/pts/ avec plusieurs personnes connectées plusieurs fois sur votre conteneur et expérimentez en changeant les permissions, les groupes, de ces périphériques caractères correspondant aux terminaux virtuels ouverts).Vous pouvez ajouter invite à vos tags lorsque :
- vous avez invité une personne,
- cette personne a réussi à se connecter à votre conteneur,
- vous avez été invité·e par une personne,
- vous avez réussi à vous connecter à son conteneur.
Objectifs du TP :
objectifs opérationnels du TP :
- pouvoir travailler à plusieurs sur un même conteneur (potentiellement utile pour l'UE "projet").
objectifs pédagogiques du TP :