
🔐 Utilità CLI leggera progettata per sincronizzare le chiavi pubbliche SSH da URL remoti nei file authorized_keys locali
Sincronizza automaticamente le chiavi pubbliche SSH da URL remote ai tuoi server
Gestire l'accesso SSH su più server è doloroso:
authorized_keys su ogni serverAuthKeySync è un CLI leggero che recupera le chiavi pubbliche SSH da URL (GitHub, GitLab, la tua API) e le sincronizza sui tuoi server. È sicuro, affidabile e progettato per l'automazione.
# /etc/authkeysync/config.yaml
users:
- username: "deploy"
sources:
- url: "https://github.com/your-username.keys"
- url: "https://github.com/another-username.keys"
Esegui authkeysync (manualmente o tramite cron) e il tuo authorized_keys viene aggiornato. Tutto qui.
Ottieni l'ultimo binario dalla pagina delle release:
# 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/
Crea un file di configurazione in /etc/authkeysync/config.yaml:
policy:
backup_enabled: true # Crea backup prima delle modifiche (default: true)
backup_retention_count: 10 # Numero di backup da conservare (default: 10)
preserve_local_keys: true # Mantieni le chiavi non presenti nelle sorgenti remote (default: true)
users:
- username: "root"
sources:
- url: "https://github.com/your-username.keys"
# Prima testa con dry-run
sudo authkeysync --dry-run
# Applica le modifiche
sudo authkeysync
Imposta un cron job o un timer systemd per eseguirlo periodicamente:
# Ogni 5 minuti (usa --quiet per ridurre il rumore nei log di cron)
echo "*/5 * * * * root /usr/local/bin/authkeysync --quiet" | sudo tee /etc/cron.d/authkeysync
| Opzione |
|---|
policy:
backup_enabled: true
backup_retention_count: 10
preserve_local_keys: true
users:
- username: "deploy"
sources:
# Chiavi GitHub semplici
- url: "https://github.com/your-username.keys"
# API privata con autenticazione
- 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
| Codice | Significato |
|---|---|
0 | Successo: tutti gli utenti elaborati o saltati |
1 | Fallimento: almeno un utente non sincronizzato |
authorized_keys con i permessi correttiSe una sorgente non riesce a recuperare i dati, AuthKeySync interrompe l'aggiornamento per quell'utente per prevenire blocchi. Il tuo accesso esistente rimane intatto.
Se trovi utile AuthKeySync, considera di dargli una stella su GitHub e seguirmi su X (Twitter) per aggiornamenti:
Licenza MIT. Vedi LICENSE per i dettagli.
| Opzione | Tipo | Default | Descrizione |
|---|
backup_enabled | bool | true | Crea backup prima di modificare authorized_keys |
backup_retention_count | int | 10 | Numero di file di backup da conservare per utente |
preserve_local_keys | bool | true | Mantieni le chiavi esistenti non presenti in sorgenti remote |
| Tipo |
|---|
| Richiesto |
|---|
| Descrizione |
|---|
username | string | Sì | Nome utente del sistema (es. root, deploy) |
sources | list | Sì | Elenco delle sorgenti di chiavi |
| Opzione | Tipo | Default | Descrizione |
|---|
url | string | (richiesto) | URL che restituisce chiavi SSH in testo semplice |
method | string | GET | Metodo HTTP: GET o POST |
headers | map | {} | Intestazioni HTTP personalizzate (es. per autenticazione) |
body | string | "" | Corpo della richiesta per richieste POST |
timeout_seconds | int | 10 | Timeout della richiesta in secondi |
| Opzione | Descrizione |
|---|
--config <path> | Percorso del file di configurazione (default: /etc/authkeysync/config.yaml) |
--dry-run | Simula la sincronizzazione senza modificare alcun file |
--debug | Abilita la registrazione debug (più verbosa) |
--quiet | Mostra solo avvisi ed errori (consigliato per cron) |
--silent | Mostra solo errori (più silenzioso) |
--version | Mostra le informazioni sulla versione ed esci |
--help | Mostra il messaggio di aiuto |