Де мої приватні / відкриті SSH ключі в UNIX?


17

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

Де я можу знайти ці ключі? Я навіть не пам’ятаю їх створення до речі, але оскільки я вже встановив ssh-зв’язки, вони повинні бути десь.

Я використовую OpenSSH_5.2p1 з MAC OS 10.6.

Спасибі!

Відповіді:


15

~/.ssh/id_rsaі ~/id_rsa.pubзазвичай. Але не випливає, що ssh повинен створити пару та зберегти їх: ssh в основному використовує протокол SSL, який встановлює ключ сеансу за допомогою алгоритму обміну ключами Diffie / Hellman або якогось іншого варіанту. Це означає, що рукостискання, що встановлює з'єднання, генерує сеансовий ключ і відкидає його, коли сеанс завершений.

Прочитавши алгоритм, це досить чудово: використовуючи досить просту математику, він встановлює ключ, відомий обом кінцям з'єднання, не надсилаючи ключ ніколи через з'єднання.


Чи означає це, що якщо мене ніколи не вимагали генерувати SSH-ключі, які RSA ніколи не використовували? Іншими словами, якийсь асиметричний алгоритм був використаний для спільного використання сеансового ключа, але тимчасові відкриті / приватні ключі для з'єднання не зберігалися на моєму комп’ютері?

Це точно так. Насправді шифрування симетричне - асиметричні алгоритми не дуже підходять для потокового передавання. Diffie-Hellman використовується для створення ключа сеансу для симетричного шифрування. Якщо ви замість цього використовуєте пару відкритих / приватних ключів, вони використовуються в іншому рукостисканні для створення ключа сеансу для симетричного алгоритму.
Чарлі Мартін

@mieli: Ні. Їх ніколи не створювали. publickeyє лише одним із можливих методів аутентифікації багатьох; якщо ви просто увійшли в систему за допомогою passwordабо keyboard-interactive, сам пароль був надісланий. (Примітка: не плутайте ключ користувача, ключ хосту та сеансові клавіші.)
user1686

@grawity ми в основному погоджуємося тут, але давайте трохи обережно. Обмін ключами Diffie-Hellman пов'язаний з RSA та іншими алгоритмами асиметричного шифрування і по суті є асиметричним, оскільки обидві сторони обміну мають свою "половину" можливої ​​угоди. Вони роблять дві частини ключа, і в кінцевому підсумку ключ і точний процес , щоб побудувати його відкидаються в кінці сесії. Однак вони не є державними та приватними частинами пари RSA.
Чарлі Мартін

4

Ваші особисті публічні та приватні ключі 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файл для зручності ( id_rsa.pubдля id_rsaтощо).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.