При явном указании файла идентификации в 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
и отправьте обратно.хост проверяет, правильно ли вы расшифровали вызов, расшифровывая свой ответ своим закрытым ключом, а клиент / хост устанавливает зашифрованное соединение на основе общих данных, а не на ваших открытых / закрытых ключах.
НЕТ ТОЧКИ в обмене - ваш личный ключ или личный ключ хоста, которым вы обменивались или открывались друг другу. Ваш открытый ключ хранится на сервере, но именно поэтому он является ПУБЛИЧНЫМ ключом.
источник
ssh -i keyname
вы точно указываете своему клиенту ssh, какой ключ вы планируете использовать для подключения к серверу. если у вас есть дюжина ключей в~/.ssh/
вашем клиенте, НЕ будет перебирать каждый ключ. он будет искать~/.ssh/id_rsa
,~/.ssh/id_dsa
возможно, несколько других имен файлов, которые закодированы в клиенте, или какой ключ указан для этого хоста в~/.ssh/config
... длинной истории; ваш клиент не / не предлагает / какие-либо ключи к серверу.~/.ssh/authorized_keys
хосте, знает, что это за вызов, и что он ищет потому что, как только открытый ключ разблокирует его, он знает, как использовать этот ключ.Криптография с открытым / закрытым ключом основана на очень простой системе:
У вас есть открытый ключ , который способен делать одностороннее шифрование, и закрытый ключ , который способен де cryption. Затем открытый ключ может быть предоставлен каждому в мире, и никто не сможет расшифровать ваши зашифрованные данные, хотя они смогут шифровать данные, которые вы можете расшифровать с помощью своего личного ключа.
Таким образом, ответ на ваш вопрос: «Ваш открытый ключ».
источник
Я не думаю, что на самом деле следует отправлять открытый или закрытый ключ в это время. Клиент должен выполнить шифрование с использованием закрытого ключа в виде открытого текста, который уже известен серверу. Хост может расшифровать это сообщение с помощью открытого ключа, зная, что единственный, кто мог правильно его зашифровать, - это клиент, который содержит соответствующий закрытый ключ, таким образом аутентифицируя клиента.
Я полагаю, что он говорит,
Offering public key: ./id_rsa
потому что он использует закрытый ключ (хранящийся в./id_rsa
) для выполнения шифрования открытого текста, который известен серверу, а затем сервер будет использовать открытый ключ для дешифрования этого зашифрованного текста и подтверждения его соответствия открытому тексту. Файл открытого ключа./id_rsa.pub
никогда не должен понадобиться клиенту после первоначальной генерации ключа. Это используется только сервером для расшифровки.источник