Compartir una clave SSH pública y privada comunes para un grupo de máquinas

2

Supongo que esta es una forma de resolver un debate interno que estoy teniendo conmigo mismo.

En mi proceso de aprovisionamiento, deseo compartir una clave pública y privada ssh para cada máquina en un clúster, (porque están detrás de un equilibrador de carga, y no quiero tener errores de desajuste de clave) Y una interna contracción, me está diciendo que está mal. La forma correcta sería generar una clave privada, para el cliente, y agregar la clave pública al archivo authorized_key?

No puedo razonar correctamente por qué es malo compartir un par de claves comunes entre todos los nodos del clúster. Uno que sí me viene a la mente es el hecho de que solo se necesita una máquina para la compresión. ¿Cuál sería un caso de uso en el que querremos usar la opción uno? ¿O está totalmente mal visto?

Una descripción del requisito: Si tenemos a Bob, deseando conectarnos a un grupo de Alices, queremos que Bob pueda conectarse a cada Alicia en el grupo de Alices ..

    
pregunta Sriram Venkatesh 24.04.2015 - 00:12
fuente

3 respuestas

1

Para responder a su pregunta, sí, puede compartir la clave de host en todos los servidores de su grupo de carga equilibrada. Luego, realiza la verificación de la clave de host una vez para la entrada de IP / DNS en la que se está equilibrando la carga e iniciará sesión en cualquiera de los miembros del grupo a partir de ese momento sin preguntarle nuevamente.

Antes de continuar, para aquellos que se preguntan por qué harías esto. Esto puede no ser sobre el control de los servidores (administración). Puede tratarse de usar scp / sftp para enviar archivos y luego, probablemente, algún tipo de aplicación de planificador / trabajo en cada miembro del grupo.

Tampoco se trata necesariamente de equilibrar la carga. Es posible que le interese esta configuración si desea obtener una alta disponibilidad, por ejemplo.

De todos modos, supongamos que has registrado myapp.mycompany.net en 10.12.77.77 y esto luego se redondea a 8 servidores. Usted comparte las claves de host entre los 8 servidores y luego ssh myapp.mycompany.net, le pedirá que confirme y luego se configura. Ahora puede hacer scp / sftp / lo que esté tratando de hacer con la entrada del DNS y no le preguntará cuándo irá a un nuevo miembro del grupo.

Espero que esto ayude!

    
respondido por el kodywilson 19.05.2015 - 19:21
fuente
1

No creo que esto deba ser un problema: usar un solo par de claves para acceder a muchos servidores está perfectamente bien y la mayoría del mundo funciona de esa manera.

Es importante comprender, como mencionó @Tom Leek, que la parte privada de la clave, que debe permanecer secreta, solo se almacena en su única máquina y nunca se transfiere fuera de ella. Entonces, incluso si uno de los servidores está comprometido (de otra manera que alguien robe su clave privada), no hay forma de que este acceso se pueda usar para obtener acceso SSH a los otros servidores (aunque es probable que el atacante haya utilizado una vulnerabilidad que lo haga). funcionan igual de bien en todos los demás servidores, ya que tienen una configuración idéntica).

Tengo que tener en cuenta que su uso de un "Load Balancer" para acceder a los servidores a través de SSH me parece sospechoso: "Load Balancer" por lo general denota un control de acceso de nivel de IP o de nivel de TCP tal que el cliente se conecta a Un solo IP y cada vez se le asigna un backend diferente. Esta no es una forma aceptada de conectarse a SSH, ya que seguirá recibiendo un error de falta de coincidencia de host cuando el cliente intente verificar la clave de host independientemente de su clave de inicio de sesión (a menos que inicie todos los hosts con la misma clave de host, lo que creo que es una mala elección). Una configuración probable es que utilizará una configuración de DNS por turnos para hacer frente a todos los servidores con el mismo nombre, donde cada vez se resuelve en una IP diferente. En tal configuración, el cliente puede verificar cada IP por separado y no recibirá un error.

    
respondido por el Guss 04.05.2015 - 18:30
fuente
0

Las claves del cliente y del servidor viven en mundos diferentes: la clave del cliente es verificada por el servidor, la clave del servidor es verificada por el cliente. Su problema actual es tener muchos servidores y un cliente, y compartir claves entre servidores. Lo que haga con el otro mundo (la clave del cliente y el archivo authorized_keys ) es irrelevante; no tiene ningún impacto en esa pregunta.

Estoy tentado de decir que el mayor problema con esta clave compartida no es que la clave se comparta; es por qué que quiere compartir la clave. Desea compartir la clave porque no sabe a cuál de los servidores se va a conectar. Y ese es el problema: estás haciendo un SSH a través de un equilibrador de carga que te enviará a uno de los servidores, pero sin control sobre cuál de ellos terminas. Esto no es lo que quieres. Desea poder hacer un SSH a todos los servidores, no solo uno elegido al azar. No puede tener eso si equilibra la carga de las conexiones SSH.

Si desea (como creo) poder controlar todas las máquinas de su clúster individualmente, entonces debe tener una forma de conectarse a cualquiera de ellas específicamente, y posiblemente (probablemente) varias al mismo tiempo. Esto significa usar sus direcciones IP específicas no compartidas o, como sugiere @Iserni, puertos distintos (si debe SSH "desde el exterior" y tiene solo una dirección IP disponible). En ese punto, el intercambio de claves es menos importante. Es posible que aún desee compartir la clave por otras razones (por ejemplo, crear todas las máquinas a partir de una imagen ya configurada o crear automáticamente un .ssh/known_hosts ya poblado para su cliente). Compartir claves entre servidores implica mover la clave privada, lo cual es, en general, una idea no muy buena; pero las máquinas de un grupo probablemente estén muy juntas y uno puede asumir (o al menos esperar) que pueden hablar juntos sin ser espiados por personas externas.

También es posible que desee investigar las herramientas vinculadas desde esa respuesta .

    
respondido por el Tom Leek 24.04.2015 - 02:25
fuente

Lea otras preguntas en las etiquetas