Аутентифікація на ssh сервері за допомогою ключів - як стати програмістом

В даній статті описано, як створити приватний і публічний ключ, а також налаштувати OpenSSH сервер для використання ключа замість пароля.

Створення приватного і публічного ключа

Зверніть увагу, що 'ssh-rsa ... xahria @ mydesktop' це один рядок, а не кілька.

ssh-keygen створив два файли: id_rsa і id_rsa.pub. У першому файлі зберігається приватний ключ, захищений кодовою фразою, введеної при створенні. Цей ключ ніколи не повинен передаватися будь-кому. Файл id_rsa.pub - публічний ключ. Публічний ключ ви передаєте того, хто повинен мати можливість перевірити вашу підпис. В даному випадку ми будемо розміщувати публічний ключ на сервері, доступ до якого нам потрібен.

Назва файлу можна змінити, використовуючи опцію -f filename. Якщо Ви не визначили ім'я файлу, то ключі будуть записані в каталог $ HOME / .ssh / с ім'ям id_rsa

Включення Pubkey аутентифікації на сервері

Після того, як ми створили ключі, Вам потрібно включити даний тип аутентифікації на сервері SSH. Спочатку визначимо тип аутентифікації - Pubkey або Identity, встановивши наступні настройки в sshd_config:

Наведені вище значення дозволяють аутентифікацію Identity / Pubkey для протоколу SSH версії 1 і 2, і перевіряють наявність публічних ключів у файлі $ HOME / .ssh / authorized_keys.

Перевірте наявність цих рядків у файлі конфігурації sshd_config (зазвичай він знаходиться в каталозі / etc / ssh /), при необхідності додайте і перезапустіть сервіс.

Додавання на сервер публічного ключа

Прядок дій наступний:

  • Створюємо файл authorized_keys в каталозі
/.ssh.
  • Додаємо публічний ключ RSA в кінець файлу authorized_keys.
  • Перевіряємо, встановлюємо права доступу і виходимо.
  • Вміст файлу authorized_keys

    Файл authorized_keys просто містить список ключів, по одному в рядку. У нього ми і пропишемо ключ, згенерований на своїй машині.

    Можна перевірити. що все працює:

    Ваш SSH клієнт спочатку спробує пройти аутентифікацію по Pubkey / Identity, а в разі невдачі - ідентифікацію по паролю. Він буде шукати ключ в іменах файлів, заданих за замовчуванням, якщо Ви не вказали ключа явно.

    Як відбувається процес підключення по кроках:

    Все це проходить непомітно для користувача. Якщо Ви хочете спостерігати за фазами з'єднання, то використовуйте ключ -v:

    Для наочності, в цьому прикладі ми вводимо неправильне кодове слово для дешифрування приватного ключа. Також Ви можете помітити, що були знайдені файли identity і id_rsa, хоча вони можуть використовуватися тільки з SSHv2.

    вибір ключів

    Якщо Ви маєте один ключ для кожного типу, то ви можете використовувати стандартні імена файлів і ssh-клієнт самостійно знайде їх і використовує, але може так трапитися, що Ви використовуєте для аутентифікації різні файли:

    Визначити використовуваний ключ можна за допомогою опції -i private_key_file:

    Наступна опція створить у Вашому

    /.ssh/config вказівку на відображення еспользуемого ключа:

    Зверніть увагу, що змінна config завжди дорівнює IdentityFile, незалежно від того, використовується Pubkey або Identity.

    Безпека кодової фрази

    Ваші приватні ключі можуть і повинні шифруватися кодовою фразою, так як це оберігає Ваш ключ від компрометації. Навіть якщо Ви встановили відповідні права доступу, але не захистили ключ кодовою фразою, без всяких проблем помилуватися Вашим ключем зможе користувач root. Так що не зводьте на гальмах цю справу.

    authorized_keys2

    Більш ранні версії OpenSSH використовували два різних публічних ключа для доступу до сервера - authorized_keys для Identities (SSHv1) і authorized_keys2 для Pubkeys (SSHv2). Пізніше було вирішено, що це нерозумно і тепер використовується один файл для ключів всіх типів, але при відсутності відповідного ключа буде перевірений і authorized_keys2. Пізніші версії OpenSSH можуть цілком припинити підтримувати authorized_keys2 зовсім.

    Щоб не думати про це обмеження, створимо жорстку посилання authorized_keys2 на файл authorized_keys.

    Так ми задовольнимо потреби будь-якої версії OpenSSH.