JavaRush /Курси /Docker SELF /Вступ до SSH: налаштування віддаленого доступу, використа...

Вступ до SSH: налаштування віддаленого доступу, використання ключів

Docker SELF
Рівень 4 , Лекція 3
Відкрита

1. Що таке SSH?

Уявіть собі, що ви знаходитеся на одному кінці планети, а сервер, який потрібно налаштувати, — на іншому. Робота шкільного IT-спеціаліста з біганиною по кабінетах — це зовсім не те, що ми хочемо. На щастя, існує SSH (Secure SHell) — інструмент для віддаленого управління серверами.

SSH — це мережевий протокол, який дозволяє безпечно підключатися до віддалених комп'ютерів. Підключення відбувається із використанням шифрування, а це означає, що передані дані захищені від сторонніх очей. SSH замінює застарілі методи на кшталт Telnet, які передавали дані у відкритому вигляді (як листівка Укрпошти).

Переваги SSH

  1. Безпека. SSH використовує шифрування, захищаючи дані від перехоплення.
  2. Гнучкість. Віддалене управління сервером, передача файлів, створення тунелів — усе це доступно через SSH.
  3. Кросплатформеність. Працює і на Linux, і на Windows (зокрема в WSL), і на MacOS.

Тепер, коли ви розумієте, навіщо потрібен SSH, давайте перейдемо до практики.


2. Встановлення SSH-клієнта

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

ssh -V

Ви маєте побачити інформацію про версію SSH-клієнта. Якщо команда не знайдена, встановіть його (на Ubuntu та інших дистрибутивах на основі Debian):

sudo apt update
sudo apt install openssh-client

На MacOS SSH-клієнт передвстановлений, а якщо ви працюєте в WSL, встановлення аналогічне Linux.


3. Підключення до віддаленого сервера через SSH

Підключення до сервера виконується командою:

ssh username@hostname
  • username — це ім'я користувача на віддаленому сервері.
  • hostname — це IP-адреса або доменне ім'я сервера.

Приклад підключення:

ssh student@192.168.1.10

Якщо все налаштовано правильно, система запитає пароль. Після введення пароля ви опинитесь у віддаленій консолі сервера. Вітаю, ви на півдорозі до професії "оператор суперлиходія у фільмі про хакерів".


4. Встановлення та налаштування SSH-сервера

Встановлення SSH-сервера

Якщо ви працюєте на сервері або локальній машині, до якої хочете підключатися, потрібно встановити SSH-сервер. На Ubuntu це робиться так:

sudo apt update
sudo apt install openssh-server

Перевіряємо статус служби SSH:

sudo systemctl status ssh

Ви повинні побачити повідомлення на кшталт active (running). Якщо сервер не запущений, використовуйте:

sudo systemctl start ssh
sudo systemctl enable ssh

Тепер SSH-сервер готовий приймати підключення.


Налаштування SSH-сервера

Основний файл конфігурації SSH-сервера — /etc/ssh/sshd_config. Щоб його відредагувати, скористайтеся будь-яким текстовим редактором, наприклад nano:

sudo nano /etc/ssh/sshd_config

Зверніть увагу на такі параметри:

  • Port 22 — порт, на якому працює SSH.
  • PermitRootLogin no — заборона підключення для root (рекомендується залишити no з міркувань безпеки).
  • PasswordAuthentication yes — дозвіл підключення за паролем.

Після зміни параметрів перезапустіть SSH-сервер:

sudo systemctl restart ssh

5. Використання ключової автентифікації

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

Генерація SSH-ключів

На машині клієнта виконайте команду:

ssh-keygen

Скрипт запитає шлях для збереження ключа (за замовчуванням ~/.ssh/id_rsa). Можна натиснути Enter, щоб прийняти його. Потім вас запитають про фразу-пароль. Краще залишити пустим для спрощення (але це не зовсім безпечно).

Після виконання команди файли ключів будуть створені:

  • id_rsa — приватний ключ (не робіть його публічним, як початковий код вашого проєкту до релізу, особливо якщо він обріс боргами).
  • id_rsa.pub — публічний ключ (цей можна використовувати для підключення).

Передача ключа на сервер

Використовуйте команду ssh-copy-id, щоб передати публічний ключ на сервер:

ssh-copy-id username@hostname

Це додасть ваш публічний ключ у файл ~/.ssh/authorized_keys на сервері. Тепер ви можете підключатися без введення пароля.

Спробуйте:

ssh username@hostname

Якщо все пройшло успішно, вас не запитають пароль. Ваше життя офіційно стало трохи простішим.

SSH і WSL

Якщо ви працюєте в Windows через WSL, там також можна використовувати SSH. Відкрийте термінал WSL і встановіть SSH-клієнт:

sudo apt update
sudo apt install openssh-client

Подальші дії такі ж, як для Linux.


6. Практична частина: налаштування SSH на localhost

Для практики ви можете налаштувати SSH-з'єднання між двома машинами в одній мережі або навіть на своєму власному комп'ютері (використовуючи localhost як адресу).

  1. Встановіть SSH-сервер і клієнт на одній машині.
  2. Підключіться за локальною адресою:
ssh your_user@localhost
  1. Налаштуйте підключення за ключем, як було показано вище.

У результаті у вас повинно вийти підключення без введення пароля.


7. Робота з конфігураціями та аліасами SSH

Якщо ти часто підключаєшся до різних серверів, можеш спростити собі життя, додавши конфігурацію SSH до файлу ~/.ssh/config:

Host myserver
    HostName 192.168.1.10
    User student
    IdentityFile ~/.ssh/id_rsa

Тепер ти можеш підключатися просто командою:

ssh myserver

Поширені помилки та їх виправлення

  1. Помилка "Connection refused". Це означає, що SSH-сервер не запущений на віддаленій машині. Переконайся, що він встановлений і запущений.

  2. Помилка "Permission denied". Або ти ввів неправильний пароль, або ключі налаштовані некоректно. Перевір вміст файлу ~/.ssh/authorized_keys на сервері.

  3. Помилка "No route to host". Перевір, чи доступний сервер у мережі (використовуй ping).


Тепер ти озброєний знаннями про те, як налаштовувати SSH, користуватися ключами та уникати типових проблем. Це потужний інструмент, який використовується всюди — чи то налаштування серверів на роботі, чи керування домашнім Raspberry Pi.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ