Чтобы ответить на ваш первый вопрос:
Для этой цели представьте, что SSH - это метод безопасного обмена данными с использованием криптографии.
Для большинства криптографических алгоритмов вам и вам понадобитсяGitHub согласовывать ключ по отдельности, что в общем случае нецелесообразно.Поэтому SSH использует класс криптографических алгоритмов, называемых «открытым ключом» или «асимметричным».
Идея состоит в том, что у вас есть два ключа, так что то, что зашифровано одним, расшифровывается другим, и это не так.вычислительно выполнимо, чтобы вычислить одно из другого.Последнее, на что я смотрел, было не так уж много алгоритмов, но они существовали.
Поэтому вы должны генерировать ключи случайным образом, и вы называете один открытый ключ, а другой - личный.Вы отправляете свой открытый ключ на GitHub или кому-либо еще, кто этого хочет.(Многое из этого все обрабатывается автоматически при наличии подходящего программного обеспечения.) Затем GitHub может тайно отправлять вам информацию, шифруя ее с помощью вашего открытого ключа, и только вы можете расшифровать ее.GitHub также отправит вам открытый ключ, чтобы вы могли отправлять секретные сообщения.
На практике эти шифры неэффективны, поэтому вы отправляете туда-сюда ключи для эффективных криптографических алгоритмов.