Авторизація по ключу ssh, losst

SSH або Secure Shell - це зашифрований протокол, який часто використовується для взаємодії та віддаленого управління серверами. Якщо ви захочете що-небудь зробити на віддаленому сервері, швидше за все, вам доведеться скористатися SSH і працювати через термінал.

Як працюють ключі SSH?

SSH сервер може виконувати аутентифікацію користувачів за допомогою різних алгоритмів. Найпопулярніший - це аутентифікація по паролю. Він досить простий, але не дуже безпечний. Паролі передаються по безпечному каналу, але вони недостатньо складні для протистояння спробам перебору. Обчислювальна потужність сучасних систем в поєднанні зі спеціальними скриптами роблять перебір дуже простим. Звичайно, існують інші способи додаткової безпеки, наприклад, fail2ban, але аутентифікація по ключу SSH надійніша.

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

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

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

Як створити ключі SSH?

Спочатку необхідно створити ключі ssh щоб ідентифікувати себе на локальному сервері. Для цього існує спеціальна утиліта ssh-keygen, яка входить в набір утиліт OpenSSH. За умовчанням вона створює пару 2048 бітних RSA ключів, яка підійде не тільки для SSH, а й для більшості інших ситуацій.

І так, генерація ключів ssh виконується командою:

Авторизація по ключу ssh, losst

Утиліта запропонує вам вибрати розташування ключів. За замовчуванням ключі розташовуються в папці

/.ssh/. Краще нічого не міняти, щоб все працювало за замовчуванням і ключі автоматично підхоплювалися. Секретний ключ буде називатися id_rsa, а публічний id_rsa.pub.

Потім утиліта запропонує ввести пароль для додаткового шифрування ключа на диску. Його можна не вказувати, якщо не хочете. Використання додаткового шифрування має тільки один мінус - необхідність вводити пароль, і кілька переваг:

  • Пароль ніколи не потрапить в мережу, він використовується тільки на локальній машині для розшифровки ключа. Це означає що перебір по паролю більше неможливий.
  • Секретний ключ зберігається в закритому каталозі і у клієнта ssh немає до нього доступу поки ви не введете пароль;
  • Якщо зловмисник хоче зламати аутентифікацію по ключу SSH, йому знадобиться доступ до всієї системи. І навіть тоді ключова фраза може стати серйозною перешкодою на його шляху.

Але все ж, це необов'язкове доповнення і якщо не хочете, то ви можете просто натиснути Enter. Тоді доступ по ключу ssh буде виконуватися автоматично і вам не потрібно буде щось вводити.

Тепер у вас є відкритий і закритий ключі SSH і ви можете використовувати їх для перевірки автентичності. Далі нам залишилося розмістити відкритий ключ на віддаленому сервері.

Завантаження ключа на сервер

Коли генерація ключів завершена, нам залишилося тільки завантажити ключ на сервер. Для завантаження ключа можна використовувати кілька способів. У деяких випадках ви можете вказати ключ в панелі управління сервером, наприклад, сPanel або будь-який інший. Але ми такий спосіб розглядати не будемо. Ми розглянемо ручні способи.

Авторизація по ключу ssh, losst

При першому підключенні до сервера система може його не розпізнавати, тому вам потрібно ввести yes. Потім введіть ваш пароль користувача на віддаленому сервері. Утиліта підключиться до віддаленого сервера, а потім використовує вміст ключа id.rsa.pub для завантаження його на сервер в файл

/.ssh/authorized_keys. Далі ви можете виконувати аутентифікацію за допомогою цього ключа.

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

/.ssh, а потім помістимо наш ключ в файл authorized_keys за допомогою символу >>, це дозволить не перезаписувати існуючі ключі:

/.ssh/id_rsa.pub | ssh username @ remote_host "mkdir -p

/.ssh cat >>

Тут вам теж потрібно набрати yes, якщо ви підключаєтеся до нового сервера, а потім ввести пароль. Тепер ви можете використовувати створений ключ для аутентифікації на сервері:

Відключення перевірки пароля

$ Sudo vi / etc / ssh / sshd_config