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