У меня есть пара открытый / закрытый ключ. Я поместил содержимое моего открытого ключа в файл моего сервера .ssh / authorized_keys. Когда я вхожу в него по SSH, он автоматически распознает мой ключ и впускает меня.

Однако, если я использую тот же открытый ключ с другим закрытым ключом и пытаюсь использовать SSH, сервер не впускает меня. Как он узнает, какой закрытый ключ искать?

Во-вторых, как я могу изменить какой закрытый ключ он должен принимать для этого конкретного открытого ключа?

3 ответа3

0

как вы сделали открытый ключ для двух разных закрытых ключей? афаик это невозможно с ssh-keygen. если вы этого не сделали (что я подозреваю), ваша проблема заключается просто в том, что вы не поняли принцип асимметричного ключа:

При генерации пары ключей ssh-keygen генерирует закрытый и открытый ключи, которые соответствуют друг другу. вы загружаете открытый ключ на сервер, а при подключении ssh шифрует некоторую информацию, используя ваш закрытый ключ. затем сервер пытается расшифровать его с помощью открытого ключа, который вы ему дали, и, если это работает, он знает, что у вас есть правильный закрытый ключ, совпадающий с открытым ключом, который он знает, и таким образом проверяет, что вы - А) вы или Б) кто-то, кто украл ваш личный ключ в случае A все хорошо, в случае B это просто ваша вина, и вы должны лучше защитить свой закрытый ключ:D

РЕДАКТИРОВАТЬ:

если вы хотите использовать два разных закрытых ключа, просто загрузите оба соответствующих им открытых ключа на сервер.

0

Каждый открытый ключ совместим ровно с одним закрытым ключом в том смысле, что сервер или любой другой компьютер может использовать открытый ключ для расшифровки сообщения, которое было зашифровано с использованием соответствующего закрытого ключа. Однако знание открытого ключа не позволяет серверу найти закрытый ключ. 1 Открытый и закрытый ключи генерируются одновременно с помощью ssh-keygen или любого другого эквивалентного инструмента, который вы используете для создания ваших ключей.

Как часть (упрощенной "игрушечной" версии) процесса входа в систему SSH, сервер создает строку, называемую одноразовым номером, и отправляет ее клиенту (вашему персональному компьютеру). Клиент шифрует одноразовый номер с помощью вашего закрытого ключа и отправляет результат обратно на сервер. Затем сервер пытается расшифровать этот результат с помощью каждого открытого ключа, указанного в файле .ssh/authorized_keys , и, если он находит тот, для которого процесс дешифрования приводит к исходному одноразовому запросу, он предоставляет вам доступ. Обратите внимание, что ни на одном этапе этого процесса сервер никогда не имеет доступа к секретному ключу и ничего не знает о нем.

Поскольку каждому открытому ключу соответствует ровно один закрытый ключ, в порядке, установленном алгоритмом шифрования ключа (RSA или DSA или ECDSA), вы не можете изменить, какой закрытый ключ сервер примет для данного открытого ключа. Если вы хотите использовать другой закрытый ключ, вам нужно сгенерировать соответствующий открытый ключ и также поместить его в файл .ssh/authorized_keys .


1 технически это возможно, но это займет больше времени, чем возраст вселенной

0

Вы можете иметь много записей в авторизованных ключах. Я не знаю, какой метод используется на стороне сервера для сопоставления пары ключей, но он работает.

Чтобы ответить на второй более важный вопрос, вы генерируете ключи в парах. Они работают ТОЛЬКО друг с другом. Вы не можете сгенерировать новый закрытый ключ для использования с определенным открытым ключом или наоборот, вы должны сгенерировать новую пару.

Так, если у вас есть 10 пользователей (например), вы можете сгенерировать 10 пар ключей, чтобы, когда придет время заблокировать одного пользователя, вы могли сделать это, удалив соответствующий открытый ключ из авторизованного ключа, тем самым сделав соответствующий закрытый ключ бесполезным ,

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