Re: clé publique/priv ée et gestion des fichiers authorized_…

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Liste Guilde
Anciens-sujets: Re: clé publique/privée et gestion des fichiers authorized_keys
Nouveaux-sujets: Re: clé publique/privée et gestion des fichiers authorized_keys
Sujet: Re: clé publique/priv ée et gestion des fichiers authorized_keys
Le mercredi 7 juillet, Yves Martin a écrit :
> Maintenant tu peux te faire un script qui concatène les fichiers
> contenus dans .ssh/pubkeys/ par exemple pour générer
> authorized_keys - à la "update-modules" de Debian.


Mais il faut alors trouver le moyen de faire tourner le script à chaque
fois qu'un fichier est ajouté ou supprimé de .ssh/pubkeys/. On peut le
faire dans un cron mais ça introduit une latence entre la modification
de .ssh/pubkeys/ et celle de authorized_keys.

Une autre idée, que je n'ai pas testée, est de faire de authorized_keys
un fifo au bout duquel se trouve un programme qui y écrit le contenu de
.ssh/pubkeys/. Voici un tel programme. L'intérêt du programme C par
rapport à un script (while true; do cat .ssh/pubkeys/*; done) est que le
premier ne fait la concaténation que une fois le fifo ouvert en lecture
par sshd (car open() est bloquant).

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    FILE *in, *out;
    char buffer[1024];
    int n;


    for (;;) {


        /* This blocks until sshd opens the pipe. */
        out = fopen("authorized_keys", "w");


        /* Concatenate all the files in pubkeys. */
        in = popen("cat pubkeys/*", "r");
        while ((n = fread(buffer, 1, sizeof buffer, in)) > 0) {
            fwrite(buffer, 1, n, out);
        }
        pclose(in);


        /* This will make sshd detect EOF. */
        fclose(out);


        /* Wait for sshd to close its end. */
        usleep(100000);
    }
    return 0;
}


Reste à savoir si sshd accepte de se faire servir les clés via un
fifo...

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org