¿Publicar id_rsa.pub para una configuración más fácil de nuevos entornos?

20

Para facilitar la configuración de SSH sin contraseña en máquinas y entornos nuevos, ¿hay alguna razón por la que el id_rsa.pubarchivo (solo la mitad pública del par de claves) no se pueda publicar en algún lugar de la web? Por ejemplo en un repositorio GitHub dotfiles.

Soy consciente de que:

  • el id_rsaarchivo (la mitad privada del par de claves) debe guardarse cuidadosamente y
  • el par de claves debe protegerse con una frase de contraseña

Pero mis búsquedas no han arrojado ningún consejo explícito de que esto esté permitido o fomentado.

Por curiosidad, ¿sería válido el mismo consejo para un par de claves sin una frase de contraseña?

DouglasDD
fuente
2
Si bien puede ser seguro en el caso general (suponiendo una clave generada correctamente), en el pasado existieron fallas (el famoso error de Debian OpenSSH ) que restringió severamente el espacio de claves y dejó la clave privada adivinable en función de la clave pública. Entonces, siempre existe ese riesgo: ¿cómo sabe que su SSH keygen no sufre un defecto similar?
Bob
2
Ya existe un mecanismo para esto: ssh-import-id
MikeyB
para que pueda compartir id_rsa.pub entre máquinas?
Federico

Respuestas:

26

RSA está específicamente diseñado para permitirle compartir esa clave pública, por lo que sí, puede publicarla. Esto es bastante similar a cómo funciona x.509 (y SSL) con certificados RSA.

Antes de publicar el archivo, míralo; Las únicas cosas que deben estar allí son la palabra clave "ssh-rsa" y la clave codificada en base64. Es posible que desee mantenerlo así (creo que este es el valor predeterminado ahora).

Esto es cierto tanto si la clave tiene una frase de contraseña como si no. Una frase de contraseña cifra la clave privada y no afecta a la clave pública.

Asegúrese, como siempre, de que su clave sea suficientemente entrópica y grande. Si es generado por un PRNG roto, puede ser predecible. Sin embargo, publicar esto no presenta mucho riesgo adicional, ya que si el espacio de claves es tan pequeño, un atacante podría simplemente intentar con todas las claves en el espacio de claves enumerado hasta que obtenga el correcto.

Sugiero usar una clave de 4096 bits (especificar -b 4096), para que sea más difícil de lo normal (el valor predeterminado es 2048) que alguien invierta su clave pública en una privada. Ese es el único riesgo significativo al hacer esto, y no es muy grande ya que el algoritmo está específicamente diseñado para hacerlo poco práctico.

Falcon Momot
fuente
33

Ya lo es. :) Simplemente ponga ".keys" al final de la URL de su perfil de Github, así:

https://github.com/tjmcewan.keys

tjmcewan
fuente
Eso es realmente interesante. ¿Para qué expone esto GitHub?
richardneish
Conveniencia. :) Es una clave pública, después de todo, está destinada a ser compartida. Ahora es mucho más fácil tomar una nueva clave de colaborador y agregarla a sus servidores. Guarda el correo electrónico de ida y vuelta.
tjmcewan
No me di cuenta de que hicieron eso.
Zeb
1
+1 por el interesante hallazgo en Github.
Raymond Tau
5

Si bien, por regla general, no recomiendo poner su propia configuración específica en los repositorios públicos de proyectos (suponiendo que el repositorio sea para todos y que su configuración sea solo para usted , es un poco grosero), las implicaciones de seguridad son mínimas.

El único vector de ataque razonable es usar de alguna manera esa clave pública para identificarlo en algún contexto malicioso. Lo que podría ser está más allá de mí, pero la clave pública identifica de manera única la clave privada, aunque no da ninguna pista sobre su origen.

Hay un vector de ataque de caso de esquina que probablemente no se aplica, pero si recuerdas el fiasco con Debian rompiendo accidentalmente el PRNG de openssl , cualquier clave ssh generada en un sistema afectado es fácilmente predecible y puede identificarse por su clave pública. Por lo tanto, en ese caso, publicar la clave pública podría ocasionarle problemas. O, más apropiadamente, usar esa tecla para cualquier cosa podría meterte en problemas.

tylerl
fuente
vector 1. ¿qué tal la colisión de huellas digitales? es mucho más corto que la clave pública en sí; el ataque del vector 2 mim como "oops server tuvo que ser reinstalado, tiene una clave diferente, pero inicie sesión de todos modos" y falsifique la autenticación exitosa para las claves públicas del usuario dado (si eso es posible, no estoy seguro)
1

Sí, puedes publicar tu SSH pubkey. ¡Y puede publicar una huella digital del servidor utilizando el registro SSHFP en DNS! Esto podría ser realmente útil, por ejemplo, si necesita actualizar / cambiar la clave SSH de un servidor.

jldugger
fuente