Понимание 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, он сопоставляет открытый ключ с закрытым ключом в вашем хранилище и поэтому знает, с каким пользователем связываться только этим.