Dans le présent article, nous apprendrons à lancer des programmes sur des machines distantes (StudSSH) sans devoir entrer de mot de passe.
A priori cela semble saugrenu, mais il n'en est rien, imaginez un script qui se connecte automatiquement à toutes les machines du département pour faire du machine learning, personne ne veut taper cent cinquante fois son mot de passe! Et pour la sécurité, on ne peut pas accepter que le mot de passe soit en clair dans le script de déployement. La solution passe par les connections par clés.
Tout d'abord, nous verrons comment se connecter via une clé. Ensuite, nous verrons comment faire pour qu'un script s'exécute lors de la connection avec cette clé.
Voyons comment se connecter par clé plutôt que par mot de passe.
Tout d'abord, il faut créer une clé d'authentification:
Sur un PC d'une salle informatique, entrez la commande ssh-keygen
Pendant cette procédure, un passphrase est demandé, entrez ce que vous voulez, n'hésitez pas à faire un mot de passe compliqué, vous ne devrez de toute façon le tapper qu'une fois de temps en temps.
Suivez les instructions qui s'afficheront à l'écran. Le programme vous demande le chemin de création de votre clé (par défaut, elle sera stockée dans ~/.ssh/id_rsa.pub).
Après avoir généré la clé, il faut la transmettre aux machines qui devront vous ouvrir leurs portes. Comme on a la chance de disposer de notre répertoire utilisateur sur toutes les machines UNIX du département, il ne faudra effectuer qu'une seule fois la copie:
Sur le même PC de la salle informatique
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Ensuite, vous devez, sur votre PC personnel, copier les clés publique et privée (id_rsa.pub et id_rsa) dans le dossier ~/.ssh/ de votre ordinateur (utilisez pour réaliser cette opération une clef USB, un CD, une disquette, ...). Aussi, noubliez pas de lancer un petit sudo chmod 600 id_rsa
, sans quoi votre client ssh pourrait râler !
C'est bien joli, mais à quoi ça sert?
Désormais, depuis votre pc portable, vous pourrez vous connecter aux machines du département informatique à l'aide de la commande
ssh LOGININGI@studssh.info.ucl.ac.be
Le problème avec ce que nous venons d'apprendre, c'est que n'importe qui peu faire n'importe quoi avec votre compte si votre terminal se retrouve seul face à l'ennemi!
Imaginons que vous vouliez vous connecter sur toutes les machines pour exécuter le terrible script zorglub.sh, il serait peut-être préférable de n'autoriser que ce script avec la clé sans mot de passe!
Pour cela, rien de plus simple, vous générez une clé comme avant. Vous ajoutez ensuite command="~/chemin/vers/votre/commande.sh"
au tout début de la clé fraîchement créée (~/.ssh/id_rsa.pub
). Le début de la clé ressemblera à command="~/chemin/vers/votre/commande.sh" ssh-dss[...]
.
Il ne reste plus qu'à copier le fichier vers la machine distante comme nous l'avons vu au premier point.
Quand vous voudrez faire exécuter ce script sur les machines distantes, le mot de passe ne sera plus demandé (si ssh-add
a été fait)
La connexion par clé vous permet d'automatiser des tâches et de demander beaucoup de travail aux serveurs distant. Utilisez les ressources avec parcimonie.