
🔐 Utilitaire CLI léger conçu pour synchroniser les clés publiques SSH depuis des URLs distantes vers les fichiers authorized_keys locaux
Synchronisez automatiquement les clés publiques SSH depuis des URLs distantes vers vos serveurs
Gérer l'accès SSH sur plusieurs serveurs est pénible :
authorized_keys sur chaque serveurAuthKeySync est un CLI léger qui récupère les clés publiques SSH depuis des URLs (GitHub, GitLab, votre propre API) et les synchronise sur vos serveurs. Il est sûr, fiable et conçu pour l'automatisation.
# /etc/authkeysync/config.yaml
users:
- username: "deploy"
sources:
- url: "https://github.com/your-username.keys"
- url: "https://github.com/another-username.keys"
Exécutez authkeysync (manuellement ou via cron), et votre authorized_keys est mise à jour. C'est tout.
Obtenez le dernier binaire depuis la page des versions :
# Linux AMD64
curl -Lo authkeysync https://github.com/eduardolat/authkeysync/releases/latest/download/authkeysync-linux-amd64
chmod +x authkeysync
sudo mv authkeysync /usr/local/bin/
Créez un fichier de configuration dans /etc/authkeysync/config.yaml :
policy:
backup_enabled: true # Crée des sauvegardes avant les modifications (défaut : true)
backup_retention_count: 10 # Nombre de sauvegardes à conserver (défaut : 10)
preserve_local_keys: true # Conserve les clés absentes des sources distantes (défaut : true)
users:
- username: "root"
sources:
- url: "https://github.com/your-username.keys"
# Testez d'abord en mode dry-run
sudo authkeysync --dry-run
# Appliquez les modifications
sudo authkeysync
Configurez une tâche cron ou un timer systemd pour une exécution périodique :
# Toutes les 5 minutes (utilisez --quiet pour réduire le bruit dans les logs cron)
echo "*/5 * * * * root /usr/local/bin/authkeysync --quiet" | sudo tee /etc/cron.d/authkeysync
| Option |
|---|
policy:
backup_enabled: true
backup_retention_count: 10
preserve_local_keys: true
users:
- username: "deploy"
sources:
# Clés GitHub simples
- url: "https://github.com/your-username.keys"
# API privée avec authentification
- url: "https://keys.yourcompany.com/api/keys"
method: "POST"
headers:
Authorization: "Bearer your-secret-token"
Content-Type: "application/json"
body: '{"environment": "production"}'
timeout_seconds: 5
| Code | Signification |
|---|---|
0 | Succès : tous les utilisateurs traités ou ignorés |
1 | Échec : au moins un utilisateur n'a pas pu être synchronisé |
authorized_keys avec les permissions appropriéesSi une source échoue à la récupération, AuthKeySync annule la mise à jour pour cet utilisateur afin d'éviter les blocages. Votre accès existant reste intact.
Si vous trouvez AuthKeySync utile, n'hésitez pas à lui donner une étoile sur GitHub et à me suivre sur X (Twitter) pour les mises à jour :
Licence MIT. Voir LICENSE pour les détails.
| Option | Type | Défaut | Description |
|---|
backup_enabled | bool | true | Crée des sauvegardes avant de modifier authorized_keys |
backup_retention_count | int | 10 | Nombre de fichiers de sauvegarde à conserver par utilisateur |
preserve_local_keys | bool | true | Conserve les clés existantes absentes des sources distantes |
| Type |
|---|
| Requis |
|---|
| Description |
|---|
username | string | Oui | Nom d'utilisateur système (ex. root, deploy) |
sources | list | Oui | Liste des sources de clés |
| Option | Type | Défaut | Description |
|---|
url | string | (requis) | URL qui renvoie des clés SSH en texte brut |
method | string | GET | Méthode HTTP : GET ou POST |
headers | map | {} | En-têtes HTTP personnalisées (ex. pour l'authentification) |
body | string | "" | Corps de la requête pour les requêtes POST |
timeout_seconds | int | 10 | Délai d'attente de la requête en secondes |
| Option | Description |
|---|
--config <path> | Chemin vers le fichier de configuration (défaut : /etc/authkeysync/config.yaml) |
--dry-run | Simule la synchronisation sans modifier aucun fichier |
--debug | Active les logs de débogage (le plus verbeux) |
--quiet | Affiche uniquement les avertissements et erreurs (recommandé pour cron) |
--silent | Affiche uniquement les erreurs (le plus silencieux) |
--version | Affiche les informations de version et quitte |
--help | Affiche le message d'aide |