5 minutes pour configurer ssh

ssh est un remplaçant des r-commandes (rsh, rlogin, rexec, telnet...) qui permet de lancer un processus ou de se loguer interactivement sur une  machine distante. L'intérêt de ssh réside dans le fait que le protocole de connexion est sécurisé par des algorithmes cryptographiques qui garantissent la confidentialité et l'intégrité des données échangées et authentifie l'utilisateur ainsi que les machines.

L'objectif de ce guide est d'expliquer comment configurer rapidement ssh pour pouvoir l'utiliser pour faire du PVM sans être obligé de saisir son mot de passe à chaque login distant.

Attention: cette configuration simplifié correspond à ce cas particulier d'utilisation au prix de quelques économies de sécurité, elle pourrai donc ne pas convenir dans un environnement dans lequel une sécurité forte est souhaitée.

1. Génération des clés privée et publique

Pour vous authentifier, ssh utilise une paire de clés qu'il faut générer en exécutant la commande suivante dans un shell:

     ssh-keygen -t dsa
     ssh-keygen -t rsa

Si vous devez vous connecter à un serveur qui ne supporte QUE le protocole SSHv1 (à éviter car moins sécurisé) vous devez également générer les clés pour ce protocole:

     ssh-keygen -t rsa1

Ne pas mettre de passphrase pour ne pas être obligé de la saisir à chaque login. Cette passphrase sert à chiffrer votre clé privée. Sans chiffrage, votre clé pourrait être utilisée par quelqu'un qui aurait accès au système de fichiers et à l'arborescence de votre compte. Mais le chiffrage vous contraint à saisir votre  passphrase à chaque accès à votre clé privée (c'est à dire chaque fois que vous vous logez)

2. Autorisation de login distant

Pour autoriser un utilisateur à se loguer via ssh sur votre compte sans saisie de mot de passe, il suffit de mettre sa clé publique dans le fichier ~/.ssh/authorized_keys Dans le cadre de l'application à PVM, vous appliquez cette règle à vous même en exécutant les commandes suivantes dans un shell:

     cd ~/.ssh
     cat  id_dsa.pub  >>  authorized_keys
     cat  id_rsa.pub  >>  authorized_keys


3. Vérification

Comme votre répertoire de login est partagé par NFS, votre clé publique fait partie de celles autorisées et vous devez pouvoir vous loguer d'une machine vers une autre sans avoir à saisir votre mot de passe. Validez le bon fonctionnement en exécutant la commande suivante dans un shell:

     toto@info20 % ssh info21
     Last login: Wed Jan 1 10:00:00 1970 from info21

     toto@info21 %

4. Configuration supplémentaire


Pour authentifier les machines, chaque machine sur laquelle ssh a été configuré possède une clé publique qui a été créée de façon similaire à la votre (cf. Par. 1) mais par root. Chaque fois que vous vous loguer sur une machine distante, ssh enregistre sa clé publique dans le fichier ~/.ssh/known_hosts Ceci permet d'authentifier à posteriori la machine distante et d'éviter une attaque du type "Men in the middle" et/ou IP spoofing. Lorsque vous êtes amené à vous loguer de nombreuses fois ceci peut être pénible. Pour que ssh rajoute automatiquement les clés des nouvelles machines dans ce fichier sans vous demander confirmation à chaque fois, modifiez votre fichier de configuration local en exécutant les commandes suivantes dans un shell:

     cd ~/.ssh
     echo  "StrictHostKeyChecking no"  >>  config

ssh ne détectera plus les attaques du type "men in the middle" ou IP spoofing, mais vous n'aurez plus à taper une confirmation à chaque fois que vous vous loguer sur une nouvelle machine.