13

Я начинаю понимать, как работают RSA и системы с открытым / закрытым ключом, и мне стало интересно, где хранится мой частный и открытый ключ SSH. Когда я захожу в свой домашний каталог и просматриваю свой каталог .ssh (cd .ssh), я вижу только файл "known_hosts", который, как мне кажется, содержит открытые ключи различных известных мне удаленных SSH-серверов.

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

Я использую OpenSSH_5.2p1 с MAC OS 10.6.

Спасибо!

3 ответа3

12

~/.ssh/id_rsa и ~/id_rsa.pub обычно. Но из этого не следует, что ssh должен создавать пару и сохранять их: ssh в основном использует протокол SSL, который устанавливает ключ сеанса, используя алгоритм обмена ключами Диффи / Хеллмана или какой-либо другой вариант. Это означает, что рукопожатие, устанавливающее соединение, генерирует ключ сеанса и отбрасывает его, когда сеанс завершен.

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

3

Ваши личные и личные ключи ssh обычно хранятся в:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

Или это могут быть id_rsa и id_rsa.pub если вы создали ключи RSA, а не ключи DSA (OpenSSH поддерживает обе формы).

Но тот факт, что вы установили ssh-соединения ранее, не означает, что у вас есть ssh-ключи. Если команда ssh не может найти ваш личный ключ, она запросит пароль для удаленной системы. Это менее безопасно, чем использование ключей.

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

2

Если вы не создать пару ключей, вы , вероятно , не один.

Трафик SSH2 шифруется с помощью симметричного сеансового ключа, установленного с использованием алгоритмов DH, ECDH или обмена ключами GSSAPI. Ни ключ хоста, ни ключ пользователя не используются для шифрования данных - их единственная цель - аутентификация.

Теперь помните, что SSH поддерживает несколько методов аутентификации: в дополнение к publickey , почти все серверы принимают простой password и / или keyboard-interactive , при котором не происходит генерация или использование ключа - пароль просто отправляется на удаленный сервер для проверки.

Другими словами, «поскольку я уже установил ssh-соединения раньше, они должны быть где-то» неверно - пара ключей пользователя не нужна для установления соединений.


Если вы сделали создать пару ключей, это, вероятно , будет в ~/.ssh/id_* - например, id_rsa для RSA ключи, id_ecdsa для ECDSA, id_dsa для АССА по умолчанию. Хотя эти файлы содержат как приватную, так и открытую части пары ключей, открытая часть обычно автоматически извлекается в отдельный файл id_*.pub Pub для удобства (id_rsa.pub для id_rsa и т.д.).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .