4

Я подписался на github и заметил, что ключ ssh выглядит интересным. Первоначально я ожидал что-то вроде ssl-ключа (имя, имя и т.д.). Пройдя через это, я замечаю, что я только ввел пароль, и это всегда myuser @ comp-name (это windows). Зачем? Я думал, что это был идентификатор пользователя / пароля, и я могу создать отдельные ключи для отдельной цели из соображений конфиденциальности.

Теперь я вижу, что мне нужно использовать один для создания хранилища. Также я вижу что-то о «файле закрытого ключа» при просмотре опций. Что именно является ключом SSH и как я могу создать отдельного пользователя, не создавая отдельную учетную запись в Windows.

2 ответа2

9

Вы слышали об асимметричном шифровании (также называемом криптографией с открытым ключом)? Это технология, на которой основаны ключи SSH.

Основная концепция асимметричного шифрования состоит в том, что у вас есть два ключа шифрования, которые обычно представляют собой очень большие числа (или, что то же самое, длинные строки двоичных данных). Любое сообщение, зашифрованное одним из них, может быть дешифровано только другим, даже не оригинальным ключом шифрования! Это полезно, потому что вы можете оставить один из ключей, закрытый ключ, при себе и опубликовать другой, открытый ключ, где-нибудь в сети или где угодно. Люди могут шифровать сообщения с помощью открытого ключа и быть уверенными, что только вы, владелец соответствующего закрытого ключа, можете расшифровать их и прочитать их содержимое. (Вот как работают GPG, PGP и подобные программы, если вы когда-либо слышали о них)

Оказывается, процесс также работает в обратном порядке с переключением ключей. Если вы зашифровываете что-то с помощью своего закрытого ключа, его можно расшифровать только с помощью соответствующего открытого ключа. Это может показаться бесполезным, потому что любой человек в мире может получить ваш открытый ключ и расшифровать сообщение, но у него есть один очень полезный побочный эффект: он подтверждает, что сообщение пришло от вас. Поскольку никто другой в мире не имеет вашего личного ключа, никто не мог бы сделать сообщение, которое можно расшифровать с помощью вашего открытого ключа.

Если вы думаете об этом, то именно то, что нужно для проверки подлинности сообщения от вас, а не от какого-то самозванца. Каждый раз, когда вы заходите на веб-сайт, используя имя пользователя и пароль, вы предоставляете некоторую секретную информацию, которая, предположительно, известна только вам, чтобы доказать, что запрос на вход поступает от вас. Что ж, вы можете сделать то же самое со своим закрытым ключом: зашифровать ваш запрос на вход в систему, чтобы доказать, что он исходит от вас. И так работает аутентификация пары ключей SSH. Вместо того, чтобы указывать имя пользователя и пароль, SSH-сервер отправляет вашему SSH-клиенту сообщение, которое необходимо зашифровать с помощью вашего закрытого ключа. Клиент шифрует его, отправляет обратно зашифрованное сообщение, а сервер расшифровывает его, используя ваш открытый ключ, чтобы проверить его. Если он проходит проверку, поздравляю, вы вошли в систему!

Я еще не подписался на GitHub (пока), поэтому я не знаком с точной процедурой, но подозреваю, что когда они запрашивают username@host , это просто комментарий для идентификации конкретного ключа. Если вы входите в GitHub с разных компьютеров, у вас будет свой закрытый ключ SSH для каждого из этих компьютеров, и GitHub необходимо отслеживать все соответствующие открытые ключи. Имя username@host - это довольно стандартный способ маркировки открытых ключей SSH, которые приходят от разных людей и / или разных хостов.

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

Что касается того, как вы создаете пару ключей SSH: я сам пользователь Linux, поэтому я не уверен, как это будет сделано с программным обеспечением, которое вы используете в Windows. Какую клиентскую программу SSH вы используете (PuTTY?) должен дать вам способ создать пару ключей.

1

Чтобы добавить к отличному ответу Дэвида:

Чтобы создать ключ SSH (или, точнее, пару открытых / закрытых ключей) в Windows, вы можете использовать (бесплатный) PuttyGen. Это дополнение к популярному клиенту PuTTY SSH.

Инструкции, например, здесь: http://theillustratednetwork.mvps.org/Ssh/Private-publicKey.html

Конечно, вы также можете создать ключ, используя инструменты OpenSSH; они просто менее распространены в Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .