Quelle est la signification de l'utilisateur / hôte à la fin d'un fichier de clé publique SSH?

74

Je ne comprends pas pourquoi un fichier de clé publique SSH généré par ssh-keygenun utilisateur et un hôte se trouve à la fin.

Exemple: id_rsa.pub

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

Notez le root@mydomainà la fin du fichier.

Si je peux utiliser la clé publique n'importe où avec n'importe quel utilisateur pour s'authentifier à l'aide de ma clé privée, quelle importance a la racine @ mondomaine sur le processus d'authentification?

Ou est-ce simplement un remplaçant pour déterminer notre nom?

Basilic a
la source
2
J'ai vu des formulaires Web trop zélés nécessitant le champ de commentaire qui incluent un symbole @, mais il n'y a pas de raison technique à cela.
poussins

Réponses:

107

Ce champ est un commentaire et peut être modifié ou ignoré à volonté. Il est défini user@hostpar défaut par ssh-keygen.

Michael Hampton
la source
1
Bref et au point. Pouvoir changer le commentaire à volonté a résolu le puzzle pour moi. Je pensais qu'il avait un rôle à jouer dans le processus d'authentification SSH.
Basil A
2
@BasilA J'ai quelques clés où je l'ai enlevé entièrement.
Michael Hampton
3
Lors de la configuration de la connexion de la clé SSH à une instance de Google Cloud Compute , GCC utilise ce champ de commentaire pour identifier le nom d'utilisateur sur l'instance à laquelle la clé doit être associée.
hBy2Py
53

Ceci est brièvement expliqué dans la page de manuel de la sshd(8)section sur les clés autorisées:

Protocole 2 clé publique se composent de: des options , keytype , clé codée en base64 , comment.

Dans le opensshcontexte des clés autorisées, il n'y a qu'un sens de commentaire. Mais il existe des implémentations SSH, qui donnent les significations à cette partie, comme par exemple l'implémentation SSH dans les modems LANCOM utilise ce commentaire comme un nom d'utilisateur pour lequel la clé est valide.

Jakuje
la source
6
+1 pour citer l'homme
mgarciaisaia
17

Comme d'autres l'ont fait remarquer, c'est un commentaire qui vous permet d'identifier quelle clé est laquelle.

Par exemple, lorsque vous regardez une clé unique, id_rsa.pubcela ne fait pas beaucoup de différence, mais lorsque vous regardez une longue liste de clés, telle que celle que vous avez dans le authorized_keysfichier, il est très utile de pouvoir identifier facilement quelle clé. est qui.

De plus, ssh-keygenpar défaut user@hostname, qui, dans les cas d'utilisation typiques, identifie clairement la clé ( user@domainne le serait pas).

Håkan Lindqvist
la source
5

Très, très simple: moi et vous êtes des humains qui utilisent une machine. Donc, en regardant cet exemple, vous avez posté:

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

Une machine peut lire ceci:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

Un humain peut lire ce commentaire:

root@mydomain

Les gens ont tendance à oublier que même si les choses pourraient semblent compliquées sur les systèmes informatiques, ils pourraient effectivement être tonnes plus compliqué si le code a été conçu uniquement pour la consommation de la machine. Je veux dire, regardez le code malveillant obscurci. Une fois que vous l'avez décodé et formaté, il est lisible par l'homme. Mais il fallait que quelqu'un fasse tout son possible pour que les humains aient du mal à lire.

Par défaut, tous les types de fichiers de codage et de configuration sur un système informatique sont structurés pour la consommation humaine car… Nous sommes des humains qui utilisons des machines et les machines n'ont pas besoin de choses telles que:

  • Commentaires.
  • Indentations.
  • Variables et fonctions écrites dans un langage lisible par l'homme.

Donc, le commentaire est destiné pour vous et moi et personne d'autre. Cela fonctionnerait très probablement sans commentaire. Mais une fois que quelque chose ne fonctionne pas à 3 heures du matin et que vous recherchez la bonne clé publique, vous allez souhaiter / rêver / prier pour que le commentaire soit là.

JakeGould
la source
7
"Les machines n'ont pas besoin de choses comme ... des indentations" Toux Python toux
un CVn
1
@ MichaelKjörling "... à moins qu'ils ne se soucient d'eux." :-)
hBy2Py