zion - ssh-agent
.Dd September 25, 1999 .Dt SSH-AGENT 1 .Os
Nom
.Nm ssh-agent .Nd agent d'authentification
Résumé
.Nm ssh-agent .Op Fl a Ar bind_address .Op Fl c Li | Fl s .Op Fl d .Op Ar command Op Ar args ... .Nm ssh-agent .Op Fl c Li | Fl s .Fl k
Description
.Nm est un programme qui sert à manipuler des clefs utilisées pour une authentification par clef publique (RSA, DSA). L'idée, c'est que .Nm soit chargé au démarrage d'une session X ou terminal, puis que tous les autres programmes ou fenêtres soient lancés en tant que clients du programme .Nm . On peut trouver l'agent grâce à des variables d'environnement, et l'utiliser automatiquement pour une authentification lors d'une connexion à d'autres machines par .Xr ssh 1 .
Les options sont les suivantes : .Bl -tag -width Ds .It Fl a Ar bind_address Branche l'agent à une socket unix-domain .Ar bind_address . Par défaut .Pa /tmp/ssh-XXXXXXXX/agent.<ppid> . .It Fl c Affiche des commandes C-shell sur la sortie standard .Xr stdout 3 . C'est le comportement par défaut si votre .Ev SHELL ressemble à un shell de type csh. .It Fl s Affiche des commandes Bourne shell sur la sortie standard .Xr stdout 3 . C'est le comportement par défaut si votre .Ev SHELL ne ressemble pas à un shell de type csh. .It Fl k Tue l'agent en cours d'exécution (identifié par la variable d'environnement .Ev SSH_AGENT_PID). .It Fl d Mode de débogage. Avec cette option, .Nm ne crée pas de processus fils (cf. .Xr fork 1 ). .El
Si on fournit une ligne de commande, on l'exécute en tant que sous-processus de l'agent. Quand la commande s'arrête, l'agent en fait autant.
L'agent ne contient pas de clef quand il démarre. On en ajoute à l'aide de la commande .Xr ssh-add 1 . Exécuté sans argument, .Xr ssh-add 1 ajoute les fichiers .Pa $HOME/.ssh/id_rsa , .Pa $HOME/.ssh/id_dsa et .Pa $HOME/.ssh/identity . Si les identités sont protégées par mot de passe (passphrase), .Xr ssh-add 1 le demande (à l'aide d'une petite application X11 si on est sous X11, ou dans un terminal sinon). Puis il envoie l'identité à l'agent. L'agent peut contenir plusieurs identités, et utiliser n'importe laquelle automatiquement. .Ic ssh-add -l affiche les identités chargées.
Le principe est le suivant : on exécute l'agent sur le PC, portable ou terminal local. On n'a pas besoin de stocker les données d'authentification sur une autre machine, et on n'envoie pas les mots de passe (passphrase) sur le réseau. La connexion à l'agent est transmise par SSH, donc l'utilisateur obtient les permissions déduites des identités de n'importe où sur le réseau, de manière sécurisée.
Il y a principalement deux manières de démarrer l'agent : soit l'agent exécute une nouvelle sous-commande pour laquelle on a exporté des variables d'environnement, soit il affiche les commandes (syntaxe .Xr sh 1 ou .Xr csh 1 ) à exécuter dans le shell d'appel. Ensuite, .Xr ssh 1 vérifie ces variables et les utilise pour se connecter à l'agent.
L'agent n'envoie jamais une clef privée par son canal d'appel. Par contre, les opérations qui nécessitent une clef privée sont prises en charge par l'agent, et le résultat est envoyé à l'appelant. De cette manière, on cache les clefs privées aux clients de l'agent.
On crée une socket unix-domain, et le nom de cette socket est stocké dans la variable d'environnement .Ev SSH_AUTH_SOCK . La socket n'est accessible qu'à l'utilisateur. Toutefois, on peut facilement contourner cette restriction en tant que root ou une autre instance du même utilisateur.
La variable d'environnement .Ev SSH_AGENT_PID contient l'identifiant de processus (process ID) de l'agent.
L'agent s'arrête quand la commande passée sur la ligne de commande s'arrête.
Fichiers
.Bl -tag -width Ds .It Pa $HOME/.ssh/identity Contient l'identité d'authentification RSA de l'utilisateur pour la version 1 du protocole. .It Pa $HOME/.ssh/id_dsa Contient l'identité d'authentification DSA de l'utilisateur pour la version 2 du protocole. .It Pa $HOME/.ssh/id_rsa Contient l'identité d'authentification RSA de l'utilisateur pour la version 2 du protocole. .It Pa /tmp/ssh-XXXXXXXX/agent.<ppid> Les sockets unix-domain contenant les connexions aux agents d'authentification. Ces sockets ne devraient être lisibles que par leur propriétaire. Elle sont supprimées automatiquement lors de l'arrêt de l'agent. .El
Auteurs
OpenSSH est dérivé de la version originale et libre ssh 1.2.12 par Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt et Dug Song ont corrigé de nombreux bugs, ré-ajouté des nouvelles fonctionnalités et créé OpenSSH. Markus Friedl a contribué au support des versions 1.5 et 2.0 du protocole SSH.
Voir aussi
.Xr ssh 1 , .Xr ssh-add 1 , .Xr ssh-keygen 1 , .Xr sshd 8
Poster un commentaire