С помощью этого метода:
ssh -i private key ubuntu_A@1.2.3.4
Я говорю, что здесь это мой закрытый ключ, а ubuntu_A
сопоставляет мой закрытый ключ с открытым ключом в authorized_keys
.
Меня запутал метод ssh-copy-id
из ubuntu_B
. Я сделал:
ssh-copy-id 1.2.3.4
и скопировал мой открытый ключ в файл authorized_key
.
Теперь, когда я использую ssh 1.2.3.4
, я могу войти в ubuntu_A
. С помощью этого метода ubuntu_A
узнает о закрытом ключе в ubuntu_B
.
Как я могу увидеть, что он проверяет закрытый ключ ?.
Технически удаленный сервер не видит ваш закрытый ключ. Ваша система предлагает серверу идентификатор вашего ключа (который соответствует идентификатору в открытом ключе) для запуска процесса.
Из руководств Digital Ocean по Пониманию процесса шифрования и соединения SSH, в частности, раздел «Аутентификация доступа пользователя к серверу» и только биты процесса аутентификации ключа:
Открытый ключ используется для шифрования данных, которые могут быть расшифрованы только с помощью закрытый ключ. Открытый ключ может быть свободно передан, потому что, хотя он может шифровать закрытый ключ, нет способа получение закрытого ключа из открытого ключа.
Аутентификация с использованием пары ключей SSH начинается после симметричного шифрование было установлено, как описано в последнем разделе. То Процедура происходит следующим образом:
- Клиент начинает с отправки идентификатора пары ключей, с помощью которой он хотел бы аутентифицироваться, на сервер.
- Сервер проверяет файл author_keys учетной записи, в которую клиент пытается войти, для получения идентификатора ключа.
- Если в файле найден открытый ключ с совпадающим идентификатором, сервер генерирует случайное число и использует открытый ключ для шифрования номер.
- Сервер отправляет клиенту это зашифрованное сообщение.
- Если у клиента действительно есть связанный закрытый ключ, он сможет расшифровать сообщение с помощью этого ключа, раскрывая исходный код. номер.
- Клиент объединяет расшифрованный номер с общим ключом сеанса, который используется для шифрования связи, и вычисляет хэш MD5 этого значения.
- Затем клиент отправляет этот хэш MD5 обратно на сервер в качестве ответа на зашифрованное числовое сообщение.
- Сервер использует тот же общий сеансовый ключ и исходное число, которое он отправил клиенту, для вычисления значения MD5 на своем своя. Сравнивает свой расчет с тем, что прислал клиент назад. Если эти два значения совпадают, это доказывает, что клиент находился в владение закрытым ключом, и клиент аутентифицируется.
Как видите, асимметрия ключей позволяет серверу шифровать сообщения клиенту с помощью открытого ключа. Затем клиент может доказать что он удерживает закрытый ключ, правильно расшифровав сообщение. То используются два типа шифрования (симметричный общий секрет и асимметричные открытые и закрытые ключи) каждый может использовать свои конкретные сильные стороны этой модели.
(К сожалению, нет возможности еще больше упростить это объяснение из приведенного выше.)