¿Qué importancia tiene el usuario / host al final de un archivo de clave pública SSH?

74

No puedo entender por qué un archivo de clave pública SSH generado por ssh-keygentiene un usuario y un host al final.

Ejemplo: id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Observe el root@mydomainal final del archivo.

Si puedo usar la clave pública en cualquier lugar con cualquier usuario para autenticar usando mi clave privada, ¿qué importancia tiene la raíz @ mydomain en el proceso de autenticación?

¿O es solo un marcador de posición para determinar quién fue emitido?

Albahaca
fuente
2
He visto algunos formularios web demasiado entusiastas que requieren que el campo de comentarios incluya un símbolo @, pero no hay ninguna razón técnica para esto.
pollitos

Respuestas:

107

Este campo es un comentario y se puede cambiar o ignorar a voluntad. Está configurado user@hostde forma predeterminada por ssh-keygen.

Michael Hampton
fuente
1
Breve y al grano. Ser capaz de cambiar el comentario a voluntad me resolvió el rompecabezas. Pensé que tenía algún tipo de papel en el proceso de autenticación ssh.
Basil A
2
@BasilA Tengo algunas claves donde lo he eliminado por completo.
Michael Hampton
3
Al configurar el inicio de sesión de la clave SSH en una instancia en Google Cloud Compute , GCC utiliza este campo de comentarios para identificar el nombre de usuario en la instancia con la que se asociará la clave.
hBy2Py
53

Esto se explica brevemente en la página del manual de la sshd(8)sección sobre claves autorizadas:

Protocolo 2 de clave pública consiste en: opciones , keytype , clave codificado en base 64 , comment.

En el opensshcontexto de claves autorizadas, solo hay un significado de comentario. Pero hay implementación SSH, que le da el significado a esta parte, ya que, por ejemplo, la implementación SSH en módems LANCOM está utilizando este comentario como un nombre de usuario para el cual la clave es válida.

Jakuje
fuente
66
+1 por citar al hombre
mgarciaisaia
17

Como otros han señalado, es un comentario para permitir que permite identificar qué clave es cuál.

Al mirar una sola clave, por ejemplo id_rsa.pub, no hay mucha diferencia, pero cuando se mira una lista potencialmente larga de claves, como la que tiene en el authorized_keysarchivo, es muy útil poder identificar fácilmente qué clave es cual.

Además, ssh-keygenel valor predeterminado es user@hostname, que para casos de uso típicos es un identificador claro de qué clave es ( user@domainno sería).

Håkan Lindqvist
fuente
5

Muy, muy simple: tú y yo somos humanos usando una máquina. Mirando este ejemplo que publicaste:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Una máquina puede leer esto:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

Un humano puede leer este comentario:

root@mydomain

La gente tiende a olvidar que a pesar de que las cosas podrían parecen complicados en los sistemas informáticos, que en realidad podría ser toneladas más complicado si el código ha sido diseñado solamente para el consumo de la máquina. Me refiero a mirar el código de malware oculto. Una vez que lo decodifica y formatea, es legible para humanos. Pero alguien tuvo que salir de su camino para dificultar la lectura de los humanos.

Por defecto, todos los tipos de archivos de codificación y configuración en un sistema informático son estructuras para el consumo humano porque ... Somos humanos usando máquinas y las máquinas no necesitan cosas como:

  • Comentarios
  • Sangría
  • Variables y funciones escritas en un lenguaje legible para humanos.

Así que el comentario está dirigido a ti, a mí y a nadie más. Lo más probable es que funcione sin un comentario. Pero una vez que algo no funciona a las 3:00 a.m. y está buscando la clave pública correcta, va a desear / soñar / rezar para que el comentario esté allí.

JakeGould
fuente
77
"máquinas no necesitan cosas como ... muescas" tos Python tos
un CVn
1
@ MichaelKjörling "... a menos que se les haga preocuparse por ellos". :-)
hBy2Py