Keychain/fr

Ce document décrit comment utiliser les clés partagées SSH avec le programme keychain. Il suppose que le lecteur a une connaissance de base de la cryptographie par clés publiques.

Le problème à résoudre
Ainsi vous disposez de cette merveilleuse machine Gentoo sur laquelle tourne, mais c'est un peu fatigant pour vous de continuer à taper tous ces mots de passe de connexion, n'est pas ? Ou peut-être avez vous un script ou une tâche de cron qui nécessite un moyen efficace d'utiliser une connexion ssh. Dans un cas comme dans l'autre, il y a une solution au problème, et elle commence avec l'authentification par clé publique.

Comment fonctionne l'authentification par clé publique ?
Supposons qu'un client veuille se connecter à sshd sur un serveur. Le client commence par générer une paire de clés et donne la clé publique au serveur. Par la suite, à chaque fois que le client essaye de se connecter, le serveur lui soumet un challenge qui est chiffré avec cette clé publique. Dans ce cas, seul le détenteur de la clé privée correspondante (le client) est capable de le déchiffrer, et vous l'aurez deviné, seul ce détenteur est à même de pouvoir donner la bonne réponse et réussir la connexion.

Générer une paire de clés
La première étape est de créer une paire de clés. Pour le faire, vous devez utiliser la commande   comme suit :

Contentez-vous d'accepter les valeurs par défaut, et assurer vous d'entrer une phrase de passe solide.

Vous devriez maintenant disposer d'une clé privée dans   et d'une clé publique dans. Vous êtes prêt à copier la clé publique sur l'hôte distant.

Préparation du serveur
Vous allez copier la clé sur le serveur qui exécute sshd. Vous allez aussi l'ajouter au fichier  qui appartient à l'utilisateur se connectant sur ce serveur. Voici un exemple sur la manière de le faire si vous avez déjà un accès ssh à ce serveur.

La sortie correspondant à la dernière ligne devrait vous montrer le contenu du fichier. Vérifiez bien qu'elle est correcte.

Tester la configuration
En théorie, si tout c'est bien passé, et si le démon ssh sur le serveur le permet, vous devriez être en mesure d'avoir un accès ssh sur le serveur sans donner de mot de passe. Il est encore nécessaire de déchiffrer la clé privée sur le client avec la phrase de passe que vous avez définie précédemment, mais il ne faut pas confondre cela avec le mot de passe du compte utilisateur sur le serveur.

Fort heureusement, on vous a demandé votre phrase de passe pour la clé id_dsa, et vous avez pu accéder en ssh au serveur comme utilisateur_serveur. Si ce n'est pas le cas, connectez-vous comme utilisateur_serveur (cette fois avec le mot de passe de votre compte sur le serveur), et vérifiez le contenu de. En particulier, vérifiez que chacune des entrées tient sur une seule ligne. Vous devriez aussi vérifier la configuration sshd pour vous assurer que le serveur préfère utiliser l'authentification par clé publique lorsqu'elle est disponible.

À ce stade, vous pensez probablement, ''De qui se moque-t-on ? J'ai simplement échangé un mot de passe contre un autre !'' Détendez-vous, la section suivante va vous expliquer comment utiliser tout ça de manière à économiser votre précieux temps.

Gestion typique des clés avec un agent ssh
Si vous avez suivi, vous pensez certainement que ce serait merveilleux si vous pouviez déchiffrer votre clé privé une seule fois, et obtenir la possibilité de vous connecter en ssh librement, sans avoir à taper aucun mot de passe. Vous avez de la chance, c'est exactement ce que le programme    va vous permettre de faire !

Le programme  est en général lancé au démarrage de votre session X, ou depuis un script de démarrage tel que. Il fonctionne en créant un socket Unix, et en enregistrant les variables d'environnement appropriées de telle manière que les applications suivantes puissent utiliser ses services en se connectant à ce socket. Clairement, cela n'a de sens que si vous le démarrez dans le processus parent de votre session X si vous voulez utiliser le jeu de clés privées déchiffrées dans toutes les applications X qui suivent.

Lorsque vous lancez ssh-agent, il devrait vous indiquer l'identifiant du processus (PID) du ssh-agent en exécution, et aussi définir quelques variables d'environnement, nommément,  et. Il devrait aussi ajouter  à sa collection et vous demander la phrase de passe correspondante. Si vous avez d'autre clés privées que vous voulez ajouter à l'agent en exécution, vous pouvez utiliser la commande  comme suit :

Maintenant, la magie ! Comme vous devriez maintenant avoir vos clés privées déchiffrées et prêtes, vous devriez pouvoir vous connecter au serveur ssh sans entrer de mot de passe.

Il serait bon de savoir comment interrompre l'agent ssh au cas où vous en auriez besoin.

Si vous voulez encore plus de confort de l'agent ssh, lisez la section suivante sur l'utilisation de keychain. Assurez-vous de tuer l'agent ssh en fonctionnement, comme indiqué précédemment, si vous décidez de le faire.

Obtenir la dernière goutte de confort de ssh-agent
Keychain va vous permettre de réutiliser un agent ssh entre sessions et, en option, vous demander les phrases de passe à chaque entrée dans la session. Avant d'avancer néanmoins, commencez par l'installer.

En supposant que l'installation a réussi, vous pouvez utiliser keychain librement. Ajoutez ce qui suit à vote  pour l'activer.

Enabling keychain in .bash_profile

Testez le maintenant. Tout d'abord, assurez-vous que l'agent ssh a été tué, puis démarrez un nouveau shell, ordinairement en vous connectant, ou en lançant un nouveau terminal. Il devrait vous inviter à entrer la phrase de passe pour chacune des clés que vous avez entrées sur la ligne de commande. Tous les shells ouverts après ce point devraient réutiliser l'agent ssh, vous autorisant ainsi à vous connecter indéfiniment en ssh sans saisir de mot de passe.

Utiliser keychain avec KDE
Si vous utilisez KDE, au lieu d'utiliser, vous pouvez confier à KDE le soin de gérer l'agent ssh pour vous. Pour cela, vous devez éditer, qui est lu au démarrage de KDE, et , qui est exécuté à l'arrêt de KDE. Voici ce que vous devriez y placer :

Editing /etc/kde/agent-startup.sh

Editing /etc/kde/shutdown/agent-shutdown.sh

Maintenant, tout ce qu'il vous reste à faire, c'est de lancer un terminal de votre choix, comme Konsole, et de charger les clés que vous voulez utiliser. Par exemple :

Vos clés seront mémorisées jusqu'à ce que vous mettiez fin à votre session KDE ou que vous tuiez l'agent ssh à la main.

Considération sur la sécurité
Bien-sûr, l'utilisation de ssh-agent peut ajouter une dose d'insécurité à votre système. Si un autre utilisateur était à même d'utiliser votre shell alors que vous êtes à la machine à café, il pourrait se connecter à tous vos serveurs sans mot de passe. En conséquence, c'est un risque pour les serveurs auxquels vous vous connectez, et vous devriez consulter la politique locale de sécurité. Si vous l'utilisez, prenez les mesures appropriées pour garantir la sécurité de vos sessions.

Dépannage
La majeure partie de tout ceci devrait fonctionner sans problème, mais si vous rencontrez une difficulté, vous devriez certainement connaître quelques points utiles.


 * Si vous ne pouvez pas vous connecter sans ssh-agent, considérez l'idée de vous connecter en ssh avec l'argument -vvv pour identifier ce qui ne va pas. Parfois le serveur n'est pas configuré pour utiliser l'authentification par clé publique, parfois il est configuré pour vous demander un mot de passe quoi qu'il arrive ! Si c'est le cas, vous pouvez utiliser l'option -o avec ssh, ou changer la configuration du serveur  dans ssh_config.
 * Si vous rencontrez des difficultés avec ssh-agent ou keychain, cela peut venir du fait que vous utilisez un shell qui ne comprend pas les commandes qu'ils utilisent. Consultez les pages de man pour ssh-agent et keychain  pour obtenir des informations sur comment les utiliser avec d'autres shells.
 * Vous pouvez aussi consulter la page d'accueil de keychain pour plus de détails.

Remerciements
Nous tenons à remercier les auteurs et éditeurs suivants pour leur contributions à ce guide :


 * Eric Brown
 * Marcelo Goes
 * nightmorph