SSH доступ за допомогою RSA ключів

Невелика інструкція по організації SSH доступу до віддаленого Linux сервера. Нагадаємо, що стандартний метод аутентифікації користувача на сервері Unix (Linux, FreeBSD) при доступі по SSH - пара логін і пароль. Але вводити їх не завжди зручно, особливо якщо таких серверів багато. Існує альтернатива такому типу доступу - організація SSH доступу по парі RSA ключів (відкритого і закритого) і кодової фразі (яка, в общем-то, не обов'язкова).

У цій статті ми розглянемо використання подібного типу доступу, який можна реалізувати за допомогою однієї з найпопулярнішої програми роботи по SSH   - PuTTY.

Для роботи нам знадобляться наступні утиліти сімейства PuTTY:

  • puttygen.exe - пакет для створення пари ключів
  • putty.exe - сам ssh термінал
  • pscp.exe - утиліта копіювання файлів по протоколу scp

Генеруємо пару RSA ключів

Для цього запускаємо утиліту PuTTYgen, перевіряємо, що в якості типу ключа обраний «SSH-2 RSA»І натискаємо кнопку«Generate«.

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

В полі «Key comment» можна задати опис ключа (воно буде відображається під час аутентифікації по ключу).

В полі «Key passphrase» і «Confirm passphrase» вказує пароль для активації ключа (він буде запитуватися при підключенні). Якщо ключову фразу не поставити, то підключення буде здійснюватися без пароля: це дуже зручно, але не дуже безпечно, тому що для доступу до сервера зловмисникові досить стягти у вас файл із закритим ключем (саме тому рекомендується зберігати приватний ключ в секреті: на зовнішньому носії USB, зашифрованому томі і т.д.).

Потім натискаємо кнопки «Save public key»І«Save private key»І зберігаємо відповідно відкритий і закритий ключі в файл з іменами, наприклад:«public.key«І«private.ppk«.

Налаштовуємо публічний ключ на сервері Linux.

Файл відкритого ключа «public.key»Потрібно скопіювати на той сервер Linux, до якого планується підключення. Для цього скористаємося утилітою pscp.exe. Команда копіювання файлу буде виглядати приблизно так:

pscp c: \ key \ public.key [email protected]: / tmp / foo

Далі скопійований ключ потрібно помістити в домашній каталог користувача в файл ~ / .ssh / authorized_keys .

Для цього заходимо на сервер по SSH (як завжди) і виконуємо наступну команду:

$ Ssh-keygen -i -f /tmp/foo/public.key >> /home/myuser/.ssh/authorized_keys

де myuser, ім'я користувача, якому буде дозволено авторизуватися за даним ключу.

Також не забудьте переконайтеся, що на сервері дозволена авторизація по ключу. Для цього в файлі / etc / ssh / sshd_config повинні бути раскоментіровани наступні рядки:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh / authorized_keys

Підключаємося по SSH за допомогою ключа

Запускаємо PuTTY і в лівій частині екрана переходимо в розділ Connections -> SSH -> Auth.

знаходимо рядок «Private key file for authentication », після чого потрібно натиснути кнопку «Browse» і вказати наш файл з приватним ключем «private.ppk».
Потім на основній вкладці вказуємо ім'я / ip адресу нашого Linux сервера і запускаємо підключення. Після чого система як зазвичай попросить вказати логін, а потім кодову фрази ключа (якщо вона вказувалася). Якщо ключова фраза не вказана, то консоль сервера відкриється без пароля.
Щоб не доведеться кожного разу лізти в налаштування Auth і вказувати файл ключа, настройки можна зберегти, для цього на головній внесок є кнопки Save (зберегти настройки PuTTY) і Load (завантажити настройки). Всі фабричні установки Putty зберігаються в реєстрі, тому їх в принципі можна перенести з одного комп'ютера на інший простим експортом / імпортом шматка реєстру (докладніше описано в статті Перенесення налаштувань PuTTY)

Крім того, щоб кожен раз вручну не вводити ім'я користувача, логін користувача також можна зберегти в PuTTY (пункт Connection \ Data \ Auto-login username).

Якщо щось не виходить, аналізуємо лог /var/log/auth.log на сервері.