При явном указании файла идентификации для ssh:
ssh -i ./id_rsa ...
У меня есть эти строки в трассировке отладки ssh:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Означает ли это ssh-сгенерированный id_rsa
также содержит публичный показатель RSA? id_rsa
формат кажется довольно явным, поскольку он содержит закрытый ключ с блоком «BEGIN PRIVATE KEY», поэтому «предложение открытого ключа» должно означать нечто иное, чем «отправка открытого ключа на сервер».
РЕДАКТИРОВАТЬ:
Чтобы прояснить, я хочу знать, что именно происходит за строкой «предлагает открытый ключ». Если у клиента несколько ключей, все они будут предлагаться серверу один за другим.
чтобы подключиться к SSH-серверу и пройти аутентификацию с помощью вашей пары открытого / закрытого ключей, вы должны сначала поделиться своим открытым ключом с сервером.
это делается путем копирования открытого ключа вашего закрытого ключа на сервер и добавления его в ~/ssh/authorized_keys
либо путем копирования / вставки, копирования id_rsa.pub
к ~/.ssh/authorized_keys
на сервере или с cat id_rsa.pub >> ~/.ssh/authorized_keys
, добавив его в список.
при подключении сервер использует ваш открытый ключ для подписи запроса, а ваш клиент использует ваш закрытый ключ id_rsa
чтобы расшифровать вызов, повторно зашифруйте его общедоступным сервером host key
и отправьте обратно.
хост проверяет, правильно ли вы расшифровали запрос, расшифровывая ваш ответ своим закрытым ключом, и клиент / хост устанавливает зашифрованное соединение на основе общих данных, а не ваших открытых / закрытых ключей.
ни при каких обстоятельствах при обмене ваш закрытый ключ или закрытый ключ хоста не обменивается или не раскрывается друг другу. ваш открытый ключ хранится на сервере, но именно поэтому он является ПУБЛИЧНЫМ ключом.
Криптография с открытым / закрытым ключом основан на очень простой системе:
У вас есть открытый ключ, способный выполнять одностороннее шифрование, и закрытый ключ, способный выполнять дешифрование. Открытый ключ может быть предоставлен всем в мире, и никто не сможет расшифровать ваши зашифрованные данные, хотя они БУДУТ иметь возможность зашифровать данные, которые вы можете расшифровать с помощью вашего закрытого ключа.
Итак, ответ на ваш вопрос: «Ваш открытый ключ».
Я не думаю, что сейчас нужно отправлять открытый или закрытый ключ. Шифрование должно выполняться клиентом с использованием закрытого ключа в виде открытого текста, который уже известен серверу. Хост может расшифровать это сообщение с помощью открытого ключа, зная, что единственный, кто мог его правильно зашифровать, - это клиент, который содержит соответствующий закрытый ключ, таким образом аутентифицируя клиента.
Я верю, что это говорит Offering public key: ./id_rsa
потому что он использует закрытый ключ (хранящийся в ./id_rsa
), чтобы выполнить шифрование открытого текста, известного серверу, а затем сервер будет использовать открытый ключ для расшифровки этого зашифрованного текста и подтверждения его соответствия открытому тексту. Файл открытого ключа ./id_rsa.pub
никогда не должны понадобиться клиенту после генерации первоначального ключа. Он используется только сервером для дешифрования.