SSH: ¿Cuál es la diferencia o la interacción entre / etc / ssh / [archivos del host] y ~ / .ssh / [clave pública]

2

Soy nuevo en SSH después de una década de incursionar con Ubuntu y otras versiones de Linux. Hoy configuré con éxito SSH, pero tuve algunos cuelgues y dolores de cabeza en el camino. Aunque el sistema ahora está funcionando correctamente, no estoy completamente seguro de que cómo esté funcionando, y eso me está volviendo loco.

El principal dolor de cabeza que me encontraba durante un tiempo fue el siguiente:

  1. Me SSH en mi máquina de Ubuntu a través de OS X y el comando "ssh". Cuando hice eso, recibí la advertencia de que este era un nuevo host al que me estaba conectando y me dieron una huella digital RSA.
  2. Luego accedería a mi máquina Ubuntu (a través de VNC) y ejecutaría ssh-keygen -lf [clave pública], y la huella digital era diferente .
  3. Frustración.

Después de hurgar un rato, descubrí el /etc/ssh/ssh_host_rsa_key.pub. En pocas palabras, revisé la huella dactilar y, voila, ahí es donde OS X estaba obteniendo la huella dactilar. Dentro de la misma carpeta, veo lo que parece ser una clave privada coincidente (verificada al verificar la huella digital) Excelente.

Así que ahora asumo que estas son claves predeterminadas prefabricadas que puede usar sin tener que generar sus propias claves o cualquiera de esas. Debido a que he generado mis propias claves (protegidas por contraseña), quise reemplazarlas. Entonces entré en el archivo SSHD_config y cambié el directorio de la clave RSA a mi directorio de inicio (~ / .ssh / [clave pública dentro del archivo authorized_keys]). Y luego borré el ssh_host_rsa_key.pub. Eso no funcionó. Reconstruí las claves de host, deshice el cambio de configuración, dejé mi clave pública generada en el directorio de inicio y moví la clave privada generada al cliente. La conexión funciona muy bien y la huella digital OS X (mi cliente) me indica que coincida con ssh_host_rsa_key.pub.

Además, sé que la seguridad está funcionando, porque si elimino el archivo authorized_keys de mi casa / .ssh /, mi cliente ya no puede conectarse.

Mis preguntas:

  1. Si OS X, mi cliente, me dice que la huella dactilar es la de ssh_host_rsa_key.pub, ¿por qué puedo conectarme sin una clave privada que coincida?

  2. Dicho de otra manera, ¿qué papel juega la clave ssh_host (sin que haya una clave privada coincidente en el cliente), cuando también necesito que la clave pública y privada generada esté correctamente en su lugar?

  3. ¿Es correcto decir que ssh requiere dos claves públicas y una clave privada para conectarse correctamente? ¿O debería sobrescribir el contenido de /etc/ssh/ssh_host_rsa_key.pub con el contenido de mi clave pública generada (que también está en usuarios autorizados)? [Edición: Intenté reemplazar ssh_host_rsa_key.pub y ssh_host_rsa_key con mis claves privadas y públicas generadas (renombradas, por supuesto). Cuando intenté reiniciar el servicio SSH, obtengo "El final debe ser KEY = VALUE pairs"). Así que rompí el servicio SSH.]

Gracias de antemano por la ayuda. He estado buscando en Google durante horas, e incluso llamé a mi amigo más experto en tecnología, que trabaja en Google. Y no he recibido una respuesta.

    
pregunta TheSecurityGuy 27.04.2015 - 19:21
fuente

1 respuesta

7

Las claves de host le autentican el servidor, sus claves lo autentican al servidor.

La clave de host SSH proporciona una huella dactilar que puede utilizar para validar que se está conectando al servidor que cree que es. Verifica manualmente la huella digital de la clave pública que presentó durante su primera conexión, luego la guarda. Para cada conexión después de eso, el servidor le envía algo que prueba que tiene la clave privada que coincide con esa clave pública, por lo que sabe que es el servidor que verificó manualmente la primera vez (... porque solo ese servidor tiene esa clave privada ).

Esto es completamente separado del par de claves que usas para autenticar tú mismo en el servidor. Ambos son pares de claves, sí, pero mantenidos por diferentes entidades, para diferentes propósitos, en diferentes puntos del proceso de conexión.

En total, la conexión SSH requiere dos pares de claves -

  • El software de su Cliente verifica la clave pública del Servidor ( host ) contra los datos que el servidor envía encriptados con la clave privada host . Esto requiere que tenga una copia de su clave pública, que se entrega en la primera conexión y las tiendas de sus clientes si la aprueba.
  • El Servidor verifica sus datos de autenticación encriptados con su usuario clave privada usando la copia de su usuario clave pública que tiene una copia porque la puso allí (o alguien puso allí para ti).
respondido por el gowenfawr 27.04.2015 - 19:27
fuente

Lea otras preguntas en las etiquetas