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