Теперь, когда я нажимаю, у меня нет открытого ключа B Github, чтобы сделать то же самое в противоположном направлении ... или он где-то хранится?
Github.com отправляет свой открытый ключ при установлении SSH-соединения. Если вы используете OpenSSH в какой-либо UNIX, он сохраняется в файле $HOME/.ssh/known_hosts
. Фактически, он появляется при первом подключении к Github через SSH, когда вы отвечаете «да» на следующее приглашение:
Невозможно установить подлинность хоста github.com (140.82.118.3).
Отпечаток ключа RSA - SHA256: nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Вы уверены, что хотите продолжить подключение (да / нет)?
Отвечая "да", вы говорите своему SSH-клиенту, что доверяете владельцу ключа, имеющего открытую часть с указанным хешем nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
. Это гарантирует, что вы подключены к настоящему github.com, а не к какому-либо мошеннику, который притворяется github.com. (Обратите внимание, что данный отпечаток совпадает с отпечатком на официальной странице справки github SSH .) В следующий раз, когда вы подключаетесь к хосту и получаете от него открытый ключ, OpenSSH будет перебирать записи в файле known_hosts
, найдите соответствующий отпечаток и предположите, что хост является подлинным и больше не будет запрашивать вас.
Но это все, что касается аутентификации Github для вас, т.е. е. доверяете ли вы серверу или нет .
Теперь ко второй части, которая включает в себя подтверждение вашей подлинности на сервере :
Кроме того, если это работает так, если кто-то хочет что-то отправить, ему просто нужно украсть открытый ключ B, «предоставленный / сохраненный в .git» Github, связанный с моей учетной записью, и отправить то, что мне не нужно
Не так. Github позволяет делать любые вещи только владельцам закрытых ключей, публичные копии которых зарегистрированы на странице настроек вашего аккаунта. Кража открытого ключа не имеет смысла, так как это открытый , т.е. это не секрет.
Давайте представим, что кто-то знает открытый ключ для вашей учетной записи Github и пытается внести некоторые изменения в ваше репо. Он подключается к Github и отправляет на него ваш открытый ключ, чтобы Github полагал, что он общается с реальным владельцем аккаунта. Но чтобы убедиться в этом, Github ставит перед клиентом задачу расшифровки, которую может выполнить только владелец закрытого ключа. Поскольку только у вас есть закрытый ключ для вашей учетной записи, только вы можете нажать на свои репозитории от вашего имени. Вот почему вы должны тщательно хранить свои личные ключи.