Какое значение имеет пользователь / хост в конце файла открытого ключа SSH?

74

Я не могу понять, почему файл открытого ключа SSH, созданный пользователем, ssh-keygenимеет в конце пользователя и хост.

Пример: id_rsa.pub

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

Обратите внимание root@mydomainна в конце файла.

Если я могу использовать открытый ключ в любом месте с любым пользователем для аутентификации, используя мой закрытый ключ, какое значение root @ mydomain имеет в процессе аутентификации?

Или это просто заполнитель, чтобы понять, кому он был выдан?

Базилик А
источник
2
Я видел некоторые чрезмерно усердные веб-формы, которые требуют, чтобы поле комментария содержало символ @, но для этого нет технической причины.
цыплята

Ответы:

107

Это поле является комментарием и может быть изменено или проигнорировано по желанию. По user@hostумолчанию установлено значение ssh-keygen.

Майкл Хэмптон
источник
1
Кратко и по существу. Возможность изменить комментарий по желанию решила головоломку для меня. Я думал, что он играет какую-то роль в процессе аутентификации ssh.
Василий A
2
@BasilA У меня есть несколько ключей, которые я полностью удалил.
Майкл Хэмптон
3
При настройке входа с помощью ключа SSH для экземпляра в Google Cloud Compute GCC использует это поле комментария для определения имени пользователя в экземпляре, с которым должен быть связан ключ.
hBy2Py
53

Это кратко объяснено на странице руководства sshd(8)в разделе об авторизованных ключах:

Протокол 2 открытого ключа состоит из: вариантов , KeyType , base64-закодированный ключ , comment.

В opensshконтексте авторизованных ключей есть только значение комментария. Но есть реализация SSH, которая придает смысл этой части, как, например, реализация SSH в модемах LANCOM использует этот комментарий как имя пользователя, для которого ключ действителен.

Jakuje
источник
6
+1 за цитирование человека
mgarciaisaia
17

Как уже отмечали другие, это комментарий, позволяющий вам определить, какой ключ какой.

Когда вы смотрите на один ключ, например, id_rsa.pubэто не имеет большого значения, но когда вы смотрите на потенциально длинный список ключей, например, на то, что у вас есть в authorized_keysфайле, очень полезно иметь возможность легко определить, какой ключ это который.

Кроме того, по ssh-keygenумолчанию используется значение user@hostname, которое для типичных сценариев использования является четким идентификатором того, каким ключом он является ( user@domainне будет).

Хокан Линдквист
источник
5

Очень, очень просто: я и вы, люди, используете машину. Итак, глядя на этот пример вы разместили:

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

Машина может прочитать это:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

Человек может прочитать этот комментарий:

root@mydomain

Люди склонны забывать , что даже если все может выглядеть сложное компьютерные системы, они могут быть на самом деле тонны сложнее , если код был разработан только для потребления машины. Я имею в виду, посмотрите на скрытый вредоносный код. Как только вы расшифруете и отформатируете его, он станет читабельным для человека. Но кто-то должен был стараться изо всех сил, чтобы людям было трудно читать.

По умолчанию все типы файлов кодирования и конфигурации в компьютерной системе являются структурой для потребления человеком, потому что… Мы люди, использующие машины, и машинам не нужны такие вещи, как:

  • Комментарии.
  • Углубления.
  • Переменные и функции написаны на понятном человеку языке.

Так что комментарий предназначен для вас и меня, и никого больше. Скорее всего, это будет работать без комментариев. Но однажды что-то не работает в 3:00 утра, и вы ищете правильный открытый ключ, вы захотите / мечтаете / молитесь, чтобы комментарий был там.

JakeGould
источник
7
«машины не нужны такие вещи , как ... углублений» кашель Python кашель
в CVN
1
@ MichaelKjörling "... если они не заботятся о них." :-)
hBy2Py