Я не могу понять, почему файл открытого ключа SSH, созданный ssh-keygen
в конце есть пользователь и хост.
Пример: id_rsa.pub
ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
Обратите внимание на root@mydomain
в конце файла.
Если я могу использовать открытый ключ где угодно с любым пользователем для аутентификации с использованием моего закрытого ключа, какое значение имеет root @ mydomain в процессе аутентификации?
Или это просто заполнитель, чтобы понять, кем он был выпущен?
Это поле является комментарием и может быть изменено или проигнорировано по желанию. Он установлен на user@host
по умолчанию ssh-keygen
.
В OpenSSH sshd(8)
страница руководства описывает формат открытого ключа следующим образом:
Открытые ключи состоят из следующих полей, разделенных пробелами: параметры, тип ключа, ключ в кодировке base64, комментарий. . . . Поле комментария ни для чего не используется (но может быть удобным для пользователя, чтобы определить ключ).
В ssh-keygen(1)
страница руководства говорит:
Комментарий о ключе может быть полезен для определения ключа. Комментарий инициализируется как «user @ host» при создании ключа, но его можно изменить с помощью опции -c.
Это кратко объясняется на странице руководства для sshd(8)
в разделе про авторизованные ключи:
Открытый ключ протокола 2 состоит из: параметры, keytype, ключ в кодировке base64,
comment
.
В openssh
в контексте авторизованных ключей есть только значение комментария. Но есть реализация SSH, которая придает значение этой части, так как, например, реализация SSH в модемах LANCOM использует этот комментарий как имя пользователя, для которого действует ключ.
Как отмечали другие, это комментарий, позволяющий ты чтобы определить, какой ключ какой.
Если посмотреть на один ключ, например, id_rsa.pub
это не имеет большого значения, но если посмотреть на потенциально длинный список ключей, например, то, что у вас есть в authorized_keys
файла, очень полезно иметь возможность легко определить, какой ключ какой.
Также, ssh-keygen
по умолчанию user@hostname
, который для типичных случаев использования является четким идентификатором того, какой это ключ (user@domain
не может быть).
Очень, очень просто: мы с вами люди, использующие машину. Итак, глядя на этот пример, который вы опубликовали:
ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
Машина может прочитать это:
ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX
Этот комментарий может прочитать человек:
root@mydomain
Люди склонны забывать, что даже если что-то смотрю сложные для компьютерных систем, они могут быть тонны сложнее, если код был разработан только для машинного потребления. Я имею в виду, посмотрите на скрытый вредоносный код. После того, как вы его расшифруете и отформатируете, он станет читаемым человеком. Но кто-то должен был сделать все возможное, чтобы людям было трудно читать.
По умолчанию все типы файлов кодирования и конфигурации в компьютерной системе являются структурой для человеческого потребления, потому что ... Мы люди, использующие машины, и машинам не нужны такие вещи, как:
Так что комментарий предназначен для вас и меня и никого другого. Скорее всего, это сработало бы без комментариев. Но однажды в 3 часа ночи что-то не работает, и вы ищете правильный открытый ключ, вы будете желать / мечтать / молиться, чтобы комментарий был там.