Page suivante Page précédente Table des matières

7. Automatisation, cas "passphrase" non vide

Il est parfois usant de donner le mot de passe à chaque commande lancée. C'est le cas notamment avec l'utilisation de cvs. Nous allons donc mettre en place un mécanisme qui permet de ne donnez qu'une seule fois un mot de passe pour l'ensemble des connexions ssh d'une session, au cas où vous utilisez une passphrase non vide.

Lancement de l'agent

ssh-agent
Cette commande lance un agent ssh et génère sur la sortie standard des commandes permettant de l'utiliser. Vous copier-collez ces commandes dans votre shell. Par exemple:

SSH_AUTH_SOCK=/tmp/ssh-IVmE4635/agent.4635; export SSH_AUTH_SOCK;
SSH_AGENT_PID=4636; export SSH_AGENT_PID;
echo Agent pid 4636;

Suivi de la commande:

ssh-add
Là, vous fournissez la "passphrase", qui peut être vide.

Ensuite, recommençons:

ssh $cptlfo@linux-france.org ls
La commande vous redemande encore le mot de passe de votre compte unix sur le site lfo. Nous n'avons pas encore copié votre clef publique sur le site lfo. Pour cela il faut copier votre clef publique, c'est à dire le contenu du fichier ~/.ssh/id_dsa.pub (situé chez vous) dans le fichier ~/.ssh/authorized_keys de votre compte sur lfo.

rsync -e ssh ~/.ssh/id_dsa.pub $cptlfo@linux-france.org:
ssh $cptlfo@linux-france.org 'cat id_dsa.pub >> ~/.ssh/authorized_keys'

Voila. recommençons:

ssh $cptlfo@linux-france.org ls

Cette fois, la commande ssh ne vous demande plus rien et exécute directement la commande ls.

Cela vous semble surement un peu compliqué et encore trop lourd. Cependant pour une nouvelle session, vous n'avez plus besoin que d'exporter les variables d'environnement $SSH_AGENT_PID $SSH_AUTH_SOCK et de la commande ssh-add.

Pour généraliser le mecanisme à l'ensemble de votre session X window, il est nécessaire que ces variables d'environnement soient définies avant le lancement du serveur X, qui les exportera par défaut à l'ensemble de vos applications graphiques (lancées sous X).

Cela peut être fait dans le fichier startx ou bien ~/.xinitrc ou bien ~/.xsession, en résumé avant le lancement de votre gestionnaire de fenêtres. Par exemple, si c'est le fichier ~/.xinitrc qui lance le gestionnaire de fenêtres, il ressemblera à ceci:

#!/bin/sh

ssh-agent -s > /tmp/ssh.hskepzj
.  /tmp/ssh.hskepzj
rm  /tmp/ssh.hskepzj

exec enlightenment

Ainsi, au prochain lancement d'un serveur X, vous n'aurez plus qu'à ouvrir une xterm et taper la commande:

ssh-add

Nous pouvons allez plus loin et lancez la demande automatiquement en ajoutant la commande suivante dans le fichier ~/.xinitrc, juste avant le lancement du gestionnaire de fenêtre (exec enlightenment)

xterm -e ssh-add


Page suivante Page précédente Table des matières