Come gestire comodamente le chiavi SSH su più macchine


0

Ho accesso a quasi una dozzina di macchine e tendo a lavorare da più dispositivi (un laptop principale, un laptop domestico, uno smartphone tramite termux, un tablet tramite termux, un macbook di backup, un'installazione cygwin in ufficio). Inoltre, alcune di queste macchine necessitano dell'accesso reciproco (ad es. Rsync su ssh per il backup remoto).

Quando avevo meno dispositivi, ero abbastanza severo su una chiave univoca per ciascuna coppia di connessioni, ma ciò divenne troppo ingombrante, quindi quello che faccio attualmente è mantenere due chiavi (chiamate "personali" e "lavoro") per ogni dispositivo, e avere due diversi file "authorized_keys" che elencano la chiave pubblica per tutte le chiavi dei miei dispositivi. Ho un semplice script bash che invia questi file authorised_keys alle macchine giuste.

Ciò si sta anche esaurendo in termini di complessità perché, ad esempio, ci sono alcuni dispositivi che dovrebbero avere chiavi inter-dispositivo aggiuntive a cui non voglio concedere l'accesso a tutte le mie macchine (ad esempio una chiave solo per il backup non dovrebbe essere permesso di accedere al mio laptop di casa).

Qual è un modo conveniente per gestire le chiavi (e in particolare le autorizzazioni autorizzate) su ciascuna di queste macchine? Sono consapevole di ansible e burattino, e ho dato un'occhiata a entrambi, ma sembrano abbastanza complicati per quello che sto cercando di fare.

Suppongo che la situazione ideale per me sarebbe quella di avere un qualche tipo di mappatura della matrice tra chiavi e macchine, che quindi genererebbe il giusto file autorizzato_keys per tutte le macchine e lo spingerebbe, ma openssh non sembra avere un tale strumento.

Risposte:


1

Non esiste un'unica risposta corretta. Su un sistema di medie dimensioni ho creato un server centrale e script per inviare e mantenere l'infrastruttura ssh. Esistono tuttavia limiti di ridimensionamento: le architetture push non si adattano così come quelle pull.

Il prossimo passo è usare qualcosa come burattino, chef o cfengine per distribuire un'architettura basata su pull.

Puoi anche passare a un sistema basato su LDAP (anche memorizzando le chiavi ssh in LDAP) - ad esempio https://shellpower.wordpress.com/2015/05/26/ssh-public-key-authentication-with-ldap-on-ubuntu / o passare a un diverso meccanismo di autenticazione: SSH ne supporta parecchi.


Concordo sul fatto che gli script homebrew non si adattano molto bene, che è ciò che mi fa venire questa domanda. Pupazzo, ecc. Sembrano eccessivi per questa scala (una dozzina di macchine), quindi mi chiedo cosa ci sia nel mezzo.
Ng Oon-Ee,

Non ho problemi a gestire molto più di una dozzina di sistemi usando un paio di script di brew fatti in casa. Leggendo la risposta, la soluzione potrebbe essere quella di ripensare l'architettura degli script. Nel mio caso (perché sono APHP / Bash guy) ho scritto un file di configurazione (come un array / struttura) in php e alcune funzioni di base che potrei quindi generare e incorporare nei miei script bash. In questo modo tutto su un unico sistema di cui tutti gli altri si fidano, posso estrarre le chiavi SSH e persino eseguire comandi arbitrari su classi / gruppi di sistemi.
davidgo,

Niente che ti impedisca di avere uno script per combinare set di chiavi prima di phttps: //shellpower.wordpress.com/2015/05/26/ssh-public-key-authentication-with-ldap-on-ubuntu/ushing to authorized_keys as appropriato per la propria configurazione - o, in alternativa, se host diversi hanno utenti o relazioni IP diversi utilizzando una direttiva AllowUsers sono i file di configurazione sshd.
davidgo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.