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-agentCette 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-addLà, vous fournissez la "passphrase", qui peut être vide.
Ensuite, recommençons:
ssh $cptlfo@linux-france.org lsLa 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