Оптимізування: Двоетапне налаштування SSH без пароля в Ubuntu
17:20, 07.12.2023
Досягнення більш зручного користувацького досвіду - один з важливих напрямків організації робочого процесу для кожного користувача. Якщо у вас є VPS або виділений сервер, ви використовуєте для доступу до нього один і той же пристрій і вам набридло вводити пароль кожного разу, коли ви починаєте працювати з вашим сервером, то вас може зацікавити налаштування безпарольного входу на ваш сервер. Для цього потрібно налаштувати метод автентифікації за допомогою відкритого ключа, який є альтернативою методу автентифікації за допомогою пароля. У цьому гайді ми детально розглянемо, як налаштувати його на вашому віддаленому робочому столі, якщо ви користувач Ubuntu.
Коротка інструкція з налаштування безпарольної автентифікації SSH
Крок 1: Створення пари відкритих/закритих ключів на Ubuntu
Першим кроком є створення пари відкритих/закритих ключів на робочому столі Ubuntu. Для цього введіть команду на Ubuntu (не на сервері):
ssh-keygen -t rsa -b 4096
Команда відповідає за створення пари ключів типу RSE за замовчуванням
- t означає "тип".
- b відноситься до бітів. Стандартна довжина ключа - 3072 біти. Ви можете збільшити її для досягнення більш високого рівня безпеки.
Ви можете натиснути Enter, щоб прийняти розташування за замовчуванням (~/.ssh/id_rsa) і залишити пароль порожнім для зручності або додати його для додаткової безпеки.
Після того, як все буде згенеровано, ви побачите щось на кшталт
Ваш ідентифікатор збережено в /home/ваше_ім'я_користувача/.ssh/id_rsa.
Ваш відкритий ключ збережено в /home/your_username/.ssh/id_rsa.pub.
Крок 2: Завантаження вашого відкритого ключа на віддалений сервер Linux
Тепер, коли все, що вам потрібно, згенеровано, ви можете завантажити його на ваш сервер. Це не обов'язково має бути сервер Ubuntu, це може бути будь-який дистрибутив Linux, якщо на ньому запущено сервер OpenSSH.
Спочатку введіть наступну команду, щоб скопіювати публічний сервер на віддалений робочий стіл. "Ваше_ім'я_користувача" і "IP-адреса_віддаленого_сервера" слід замінити на відповідні ім'я користувача і IP-адресу.
ssh-copy-id ваше_ім'я_користувача@IP-адреса_віддаленого_сервера
Далі вас попросять ввести пароль до віддаленого сервера, якщо ви встановили пароль на попередньому етапі.
Щойно ключ буде скопійовано, ви побачите подібне вікно:
Кількість доданих ключів: 1
Відтепер ви встановили безпарольний вхід до вашого сервера.
Вимкнення автентифікації на основі пароля
Після налаштування безпарольної автентифікації ви можете піти далі і вимкнути автентифікацію на основі пароля, залишивши лише автентифікацію на основі ключа SSH, щоб ще більше підвищити безпеку, зробивши ваш сервер захищеним від брутфорс. Щоб зробити це:
- Увійдіть на свій сервер:
ssh ваше_ім'я_користувача@ip_віддаленого_сервера
- Відкрийте файл /etc/ssh/sshd_config на сервері за допомогою текстового редактора (наприклад, Nano або Vim)
- Знайдіть наступний рядок і змініть його значення на no:
PasswordAuthentication no
- Знайдіть рядок ChallengeResponseAuthentication і переконайтеся, що його статус також дорівнює no
ChallengeResponseAuthentication no
- Збережіть і закрийте текстовий редактор.
- Перезапустіть службу SSH, щоб застосувати зміни:
Debian/Ubuntu:
sudo systemctl restart ssh
RHEL/CentOS:
sudo systemctl restart sshd
Тепер парольна автентифікація повинна бути повністю відключена, і спроби доступу без ключів автентифікації не будуть успішними з результатами на кшталт Permission denied (publickey) або Connection reset by peer.
Майте на увазі, що для параметрів PasswordAuthentication і ChallengeResponseAuthentication має бути встановлено значення "no", інакше автентифікація за паролем буде доступною.
Захист пари відкритих/закритих ключів за допомогою резервних копій.
Після завершення конфігурації пари публічних/приватних ключів, наступним кроком буде створення їх резервних копій. Оскільки ключі тепер необхідні для входу на ваш сервер, їх втрата може призвести до втрати доступу до вашого сервера. Тому вам слід створити резервну копію пари відкритих/закритих ключів у безпечному місці, до якого ви можете легко отримати доступ (наприклад, на USB-накопичувачі тощо). Давайте покроково розглянемо, як створити резервну копію пари відкритих/закритих ключів.
- Знайдіть розташування ваших ключів. Зазвичай, це має бути щось на кшталт каталогу ~/.ssh.
- Скопіюйте пару ключів: Скопіюйте пару ключів у потрібне безпечне місце за допомогою команди cp
cp ~/.ssh/id_rsa ~/.ssh/id_rsa_backup
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub_backup
id_rsa та id_rsa.pub слід замінити на справжні імена ваших ключових файлів, якщо вони відрізняються.
- Тепер, коли ваша пара відкритих/закритих ключів скопійована, вам слід зберігати її в безпечному місці.
Крім того, якщо вибране вами місце є іншим комп'ютерним пристроєм, вам слід змінити користувача ключів на цьому іншому пристрої:
sudo chown new-user:new-user ~/.ssh/id_rsa*
Після цього ви зможете отримати доступ до вашого сервера і з іншого пристрою.
Відновлення пари ключів
Якщо вам колись знадобиться відновити вашу пару ключів з резервної копії, яку ви створили відповідно до наведених вище інструкцій, ви можете виконати такі дії:
- Скопіюйте файли резервної копії: Скопіюйте файли резервної копії пари ключів до каталогу ~/.ssh:
cp ~/.ssh/id_rsa_backup ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub_backup ~/.ssh/id_rsa.pub
- Встановіть відповідні дозволи: Переконайтеся, що дозволи на ці файли є безпечними:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
- Перевірте пару ключів: Тепер, щоб перевірити, чи все працює, протестуйте пару ключів, підключившись по SSH до вашого сервера
ssh ваше_ім'я_користувача@віддалений_сервер
Якщо ваш сервер захищено парольною фразою, вам буде запропоновано ввести її.
Підвищення безпеки за допомогою зберігання ключових фраз у SSH-агенті
Якщо ви використовуєте лише командний рядок Linux, вам доведеться вводити ключову фразу кожного разу, коли ви отримуєте доступ до іншого пристрою Linux за допомогою SSH. Щоб виправити це, вам потрібно зберегти ключову фразу в SSH-агенті. Щоб це зробити:
- Встановіть ключову фразу:
sudo apt install keychain
- Внесіть зміни до файлу .bash_profile або .profile, щоб автоматизувати виконання команд:
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
- При повторному вході ви побачите результат, подібний до цього:
Останній вхід: Sun Aug 12 15:20:07 2020 from 203.45.67.89
- keychain 2.7.1 ~ http://www.funtoo.org
- Знайдено існуючий ssh-агент: 17892
- Додано 1 ssh-ключ(и): /home/johndoe/.ssh/id_rsa
Введіть пароль для /home/johndoe/.ssh/id_rsa:
- ssh-add: Ідентифікатори додано: /home/johndoe/.ssh/id_rsa
Тепер, коли зв'язка ключів налаштована і пара ключів збережена, вам не потрібно буде вводити пароль щоразу при SSH-з'єднанні з вашим сервером.
Зміна парольної фрази вашого приватного ключа
Якщо ви згодом захочете змінити пароль вашого закритого ключа, скористайтеся наступною командою:
ssh-keygen -f ~/.ssh/id_rsa -p