Le chiavi client e server vivono in mondi diversi: la chiave del client viene verificata dal server, la chiave del server viene verificata dal client. Il tuo problema consiste nell'avere molti server e un client e la condivisione delle chiavi tra i server. Quello che fai con l'altro mondo (la chiave del client e il file authorized_keys
) è irrilevante; non ha alcun impatto su quella domanda.
Sono tentato di dire che il problema più grande con questa condivisione delle chiavi non è che la chiave sia condivisa; è perché vuoi condividere la chiave. Vuoi condividere la chiave perché non sai a quale server stai per collegarti. E che è il problema: stai facendo un SSH attraverso un sistema di bilanciamento del carico che ti invierà a uno dei server, ma senza alcun controllo su quale dei due finirai. Questo non è quello che vuoi. Vuoi essere in grado di fare un SSH su tutti i server, non solo su uno scelto a caso. Non puoi farlo se carichi il bilanciamento delle connessioni SSH.
Se vuoi (come credo) essere in grado di controllare tutte le tue macchine cluster individualmente, allora devi avere un modo per connetterti a qualcuno di loro in modo specifico, e possibilmente (probabilmente) diversi allo stesso tempo. Ciò significa utilizzare i loro indirizzi IP specifici non condivisi o, come suggerisce @Iserni, porte distinte (se è necessario SSH "dall'esterno" e avere solo un indirizzo IP disponibile). A quel punto, la condivisione delle chiavi è meno importante. Puoi comunque voler condividere la chiave per altri motivi (ad es. Creare tutte le macchine da un'immagine già configurata o creare automaticamente una .ssh/known_hosts
già popolata per il tuo cliente). La condivisione delle chiavi tra i server implica lo spostamento della chiave privata, che in generale non è un'idea molto buona; ma le macchine di un cluster sono probabilmente vicine e si può presumere (o almeno sperare) che possano parlare insieme senza essere spiati dagli estranei.
Potresti anche voler esaminare gli strumenti collegati dalla risposta .