Понимание ssh-keygen для SSH'инга на сервере против доступа к GitHub

Так что я понимаю, что ssh-keygen это одна из многих команд, предоставляемых OpenSSH.

При создании пары секретный / открытый ключ с использованием ssh-keygenЯ знаю, что вы можете поместить открытый ключ на удаленный сервер (внутри ~/.ssh/authorised_keys) и это позволит вам ssh на этот сервер.

Но кажется, что есть два разных способа генерации пары ключей, в том смысле, что вы можете просто использовать ssh-keygen один, и когда ты cat открытый ключ вы увидите что-то вроде:

ssh-rsa XXXX User@ComputerName

куда User@ComputerName выглядит примерно так M@Marks-MBP.default для меня.

Другой способ заключается в использовании -C флаг комментария (GitHub предлагает сделать это). Где, кажется, что он не будет использовать User@ComputerName но вместо этого ваш адрес электронной почты на своем месте (или любой "комментарий", который вы используете).

Правильно ли я считаю, что для SSH'инга на сервер имя пользователя, которое вы используете для входа, -C комментарий установлен в вашем открытом ключе?

Так что, если я не использую -C вообще, тогда он сгенерирует открытый ключ с M@Marks-MBP.default в конце. Затем я предполагаю, что имя пользователя будет M,

Но если я использую -C "bingbop"тогда я предполагаю, что имя пользователя для SSH будет bingbop,

Это верно?

Кроме того, есть ли техническая причина, по которой GitHub рекомендует использовать -C указать свой адрес электронной почты, а не оставлять этот флаг выключенным?

Я предполагаю, что когда вы пытаетесь клонировать или подтолкнуть к вашему репо (используя их git@github.com:<user>/<repo>.git протокол), что он не может идентифицировать вас только с помощью открытого ключа, ему нужно, чтобы комментарий был установлен на ваш адрес электронной почты GitHub

2 ответа

Решение

Правильно ли я считаю, что для SSH'инга на сервер, имя пользователя, которое вы используете для входа в систему, - это то, что для комментария -C установлено в вашем открытом ключе?

Нет. Поле комментария на самом деле просто: (необязательный) комментарий, который по соглашению обычно устанавливается на ваш адрес электронной почты, но по умолчанию user@host если не указано

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

Кроме того, есть ли какая-либо техническая причина, по которой GitHub рекомендует использовать -C для указания своего адреса электронной почты, а не оставлять этот флаг выключенным?

Да, причина в том, что по умолчанию user@host редко предоставляет полезную информацию тому, кому вы даете свой открытый ключ. Ваш адрес электронной почты, с другой стороны, является более ценной информацией.

Я предполагаю, что когда вы пытаетесь клонировать или подтолкнуть к вашему репо (используя их протокол git@github.com:/. Git), что он не может идентифицировать вас только с помощью открытого ключа, ему нужно установить комментарий на ваш адрес электронной почты GitHub.

GitHub может идентифицировать вас только по предоставленному ключу, поскольку он уникален для всех пользователей GitHub. В указанном вами синтаксисе URI git перед @ это имя пользователя, предоставленное SSH. Таким образом, GitHub использует общее имя пользователя git для всех его пользователей, а отдельные пользователи идентифицируются по ключу, который они предоставляют.

Комментарий только в ознакомительных целях; это не имеет отношения к имени пользователя, известному Git. Когда вы запускаете ssh в github, он сопоставляет открытый ключ с закрытым ключом в вашем хранилище и поэтому знает, с каким пользователем связываться только этим.

Другие вопросы по тегам