Вы слышали об асимметричном шифровании (также называемом криптографией с открытым ключом)? Это технология, на которой основаны ключи SSH.
Основная концепция асимметричного шифрования состоит в том, что у вас есть два ключа шифрования, которые обычно представляют собой очень большие числа (или, что то же самое, длинные строки двоичных данных). Любое сообщение, зашифрованное одним из них, может быть дешифровано только другим, даже не оригинальным ключом шифрования! Это полезно, потому что вы можете оставить один из ключей, закрытый ключ, при себе и опубликовать другой, открытый ключ, где-нибудь в сети или где угодно. Люди могут шифровать сообщения с помощью открытого ключа и быть уверенными, что только вы, владелец соответствующего закрытого ключа, можете расшифровать их и прочитать их содержимое. (Вот как работают GPG, PGP и подобные программы, если вы когда-либо слышали о них)
Оказывается, процесс также работает в обратном порядке с переключением ключей. Если вы зашифровываете что-то с помощью своего закрытого ключа, его можно расшифровать только с помощью соответствующего открытого ключа. Это может показаться бесполезным, потому что любой человек в мире может получить ваш открытый ключ и расшифровать сообщение, но у него есть один очень полезный побочный эффект: он подтверждает, что сообщение пришло от вас . Поскольку никто другой в мире не имеет вашего личного ключа, никто не мог бы сделать сообщение, которое можно расшифровать с помощью вашего открытого ключа.
Если вы думаете об этом, то именно то, что нужно для проверки подлинности сообщения от вас, а не от какого-то самозванца. Каждый раз, когда вы заходите на веб-сайт, используя имя пользователя и пароль, вы предоставляете некоторую секретную информацию, которая, предположительно, известна только вам, чтобы доказать, что запрос на вход в систему исходит от вас. Что ж, вы можете сделать то же самое со своим закрытым ключом: зашифровать ваш запрос на вход в систему, чтобы доказать, что он исходит от вас. И так работает аутентификация пары ключей SSH. Вместо того, чтобы указывать имя пользователя и пароль, SSH-сервер отправляет вашему SSH-клиенту сообщение, которое необходимо зашифровать с помощью вашего закрытого ключа. Клиент шифрует его, отправляет обратно зашифрованное сообщение, а сервер расшифровывает его, используя ваш открытый ключ, чтобы проверить его. Если он проходит проверку, поздравляю, вы вошли в систему!
Я еще не подписался на GitHub (пока), поэтому я не знаком с точной процедурой, но подозреваю, что когда они просят username@host
, это просто комментарий для идентификации конкретного ключа. Если вы входите в GitHub с разных компьютеров, у вас будет свой закрытый ключ SSH для каждого из этих компьютеров, и GitHub необходимо отслеживать все соответствующие открытые ключи. Это username@host
довольно стандартный способ маркировки открытых ключей SSH, полученных от разных людей и / или разных хостов.
Кстати, стоит отметить, что аутентификация пары ключей SSH обычно считается более безопасной, чем аутентификация по имени пользователя и паролю. Причина в том, что когда вы используете имя пользователя и пароль для входа на веб-сайт, вы должны предоставить эту информацию как минимум еще одному компьютеру: веб-серверу, на котором работает сайт. В большинстве случаев это нормально, но всегда возможно, что кто-то, кто отвечает за веб-сайт, или даже кто-то, кто имеет доступ к серверу, может записать ваш пароль и использовать его за вашей спиной, чтобы выдать себя за вас. Использование пары секретный / открытый ключ исключает эту возможность, потому что вы никогда не передаете закрытый ключ никомувообще, даже сервер, на который вы входите. Таким образом, хотя сервер (например, GitHub) вполне способен проверить, действительно ли вы входите в систему, на нем все еще недостаточно информации, чтобы притворяться, что вы входите в систему как вы.
Что касается того, как вы создаете пару ключей SSH: я сам пользователь Linux, поэтому я не уверен, как это будет сделано с программным обеспечением, которое вы используете в Windows. Какая клиентская программа SSH, которую вы используете (PuTTY?), Должна дать вам возможность создать пару ключей.