Когда именно SSH-агент использует мой private_key для подключения к удаленному серверу?

Мне нужны некоторые основы SSH, чтобы помочь мне понять процесс подключения SSH.

У меня есть сервер Ubuntu на моей виртуальной коробке и рабочий стол Ubuntu на моем хосте. Я установил соединение с моей виртуальной машиной, добавив id_rsa.pub к authorized_keys на удаленном компьютере (добавлено с помощью ssh-copy-id). id_rsa.pub генерируется ssh-keygen, а также id_rsa.

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

Я пытался удалить это закрытый ключ, но, несмотря на это, соединение все еще работает! На мой взгляд, этот файл не должен устанавливать соединение с моей виртуальной машиной.

1
задан 17 March 2017 в 10:44

4 ответа

Чтобы «изучить», как работает ssh, вы можете использовать флаги verbose. Например,

ssh -v ...

даст информацию о рукопожатии. Вы можете использовать несколько v, максимум три, чтобы получить еще больше отладочной информации:

ssh -vvv ...

Тем не менее, ссылка на странице википедии, размещенной @darent , стоит чтение, чтобы понять асимметричный ключ шифрования. Много полезных ссылок на детали можно найти в , этот вопрос на SuperUser .

0
ответ дан 17 March 2017 в 10:44

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

Если вы дадите мне свой открытый ключ, когда вы попытаетесь войти в мой компьютер, ваш SSH-клиент будет использовать ваш закрытый ключ для генерации зашифрованного запроса аутентификации на вашем конце и отправки его на мой компьютер. Мой компьютер будет использовать ваш открытый ключ для расшифровки зашифрованного запроса аутентификации и, таким образом, подтвердить, что вы, а не кто-то другой, пытаетесь проникнуть на мой компьютер.

Примечание. Пара секретный-открытый ключ не используется для шифрования передачи между двумя компьютерами. Поэтому, как только соединение установлено, ключи не нужны, пока соединение не будет разорвано и не будет предпринято новое соединение. SSH имеет свою собственную внутреннюю систему шифрования данных, которая не зависит от пары закрытый-открытый ключ.

Итак, принимая ваш открытый ключ, я доверил вам войти в мой компьютер. Если вы когда-нибудь нарушите мое доверие, я удалю ваш открытый ключ с моего компьютера. Тогда вы больше не сможете использовать SSH на моем компьютере.

Если вы отдадите свой закрытый ключ кому-то другому (или если кто-то украдет его), тогда этот человек сможет притвориться вами. Если я узнаю, что вы передали свой закрытый ключ кому-то другому, я удалю ваш открытый ключ с моего компьютера. Тогда ни вы, ни другой человек не сможете подключиться по SSH к моему компьютеру.

Открытый ключ, который вы мне дали, бесполезен, если я попытаюсь подключить SSH к вашему компьютеру, так как он полезен только для дешифрования информации, которую вы генерируете с помощью своего закрытого ключа. Если вы хотите, чтобы я подключил SSH к вашему компьютеру, вам нужно будет поместить мой открытый ключ в нужное место на вашем компьютере.

Ubuntu хранит ваши личные ключи в программном обеспечении для управления паролями, которое называется Password и Encryption Keys:

enter image description here

Обратите внимание, средняя вкладка Мои личные ключи , Это необходимо для защиты вашего личного ключа от кражи (и от случайного удаления вашего личного ключа).

Вот дополнительная информация о менеджере паролей Seahorse .

Надеюсь, это поможет

0
ответ дан 17 March 2017 в 10:44

Вы не должны вручную «использовать» свой закрытый ключ. Публичная / частная криптография основана на использовании двух ключей, один из которых становится общедоступным, а другой - на вашем компьютере, частный.

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

Думайте об этом так, как если бы у вас было два ключа: все, что заблокировано одним ключом, может быть разблокировано только с противоположным. Поэтому не удаляйте свой закрытый ключ, потому что это сделает открытый ключ бесполезным.

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

0
ответ дан 17 March 2017 в 10:44

Вы имеете в виду, что вы удалили закрытый ключ на сервере? Если это так, то он используется только при загрузке с этого сервера. Это не повлияет на работу с сервером.

0
ответ дан 17 March 2017 в 10:44

Другие вопросы по тегам:

Похожие вопросы: