Що таке SSH і як безпечно ним користуватися
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: SSH (Secure Shell) — це протокол, тобто набір правил обміну даними, який дає змогу безпечно підключатися до іншого комп’ютера через мережу й виконувати на ньому команди. Він шифрує передані дані, тому підходить для віддаленого керування сервером, зокрема через інтернет. Для підключення потрібні програма з підтримкою SSH, адреса сервера, обліковий запис користувача та пароль або належно налаштований ключ.
Для чого потрібен SSH?
Найчастіше SSH використовують для роботи на віддаленому комп’ютері через термінал — текстовий інтерфейс. Після входу ви вводите команди, які виконуються на сервері, а не на вашому ноутбуці. Так можна переглядати журнали помилок, оновлювати програмне забезпечення й змінювати налаштування служб — у межах прав вашого облікового запису.
Наприклад, сайт на вашому VPS, тобто віртуальному приватному сервері, перестає працювати. Через SSH можна перевірити, чи не закінчилося місце на диску, прочитати повідомлення про помилки й перезапустити службу, якщо у вас є відповідні права. Графічний робочий стіл сервера для цього не потрібен.
SSH має й інші застосування:
- Передавання файлів через SFTP — протокол передавання файлів, що працює через з’єднання SSH. SFTP — це не те саме, що FTP або FTPS.
- Робота з репозиторіями Git — ключ SSH може підтверджувати ваші права під час отримання та надсилання змін у коді.
- Тунелювання з’єднань — передавання трафіку певного застосунку через зашифрований канал, наприклад для доступу до бази даних, до якої не можна підключитися безпосередньо з інтернету.
Як працює зашифроване з’єднання SSH?
З одного боку працює клієнт SSH — програма, яка ініціює з’єднання. З іншого — сервер SSH, тобто служба, що приймає підключення. Популярною реалізацією обох цих компонентів є OpenSSH. За замовчуванням служба очікує підключень на порту TCP 22; порт — це номер, який указує на певну службу на пристрої.
Під час встановлення з’єднання клієнт і сервер узгоджують параметри захисту та створюють зашифрований канал. Ключ хоста, тобто ключ, що ідентифікує сервер, дає клієнту змогу перевірити, з яким комп’ютером він з’єднується. Потім сервер перевіряє особу користувача, наприклад за допомогою пароля або ключа користувача.
Шифрування захищає вміст команд, результатів їх виконання та переданих даних від перехоплення під час передавання. Проте воно не захищає від усіх загроз: заражений ноутбук може перехопити дані до шифрування, а захоплений зловмисниками сервер — розкрити їх після розшифрування. SSH також не приховує самого факту обміну даними між пристроями.
Як підключитися до сервера через SSH?
Спочатку перевірте в панелі керування або документації хостинг-провайдера, чи передбачає ваш тариф доступ через SSH. На спільному хостингу ця функція або набір доступних команд можуть бути обмежені. Уточніть адресу хоста, ім’я користувача, порт і дозволений спосіб входу — не варто вгадувати ці дані за адресою сайту.
У системах Linux і macOS клієнт SSH зазвичай доступний у терміналі. У Windows можна користуватися клієнтом OpenSSH, якщо його встановлено, наприклад у PowerShell. Основна команда має такий вигляд:
ssh anna (at) serwer.example
Замініть anna на ім’я свого облікового запису, а server.example — на справжню адресу сервера або його IP-адресу. Якщо провайдер указує інший порт, наприклад 2222, скористайтеся командою:
ssh -p 2222 anna (at) serwer.example
Під час першого підключення програма зазвичай показує відбиток ключа хоста — хеш, за яким можна розпізнати ключ сервера. Порівняйте його з даними з надійного джерела, наприклад із панелі провайдера або від адміністратора, отриманими через незалежний канал зв’язку. Не підтверджуйте його автоматично лише тому, що програма запитує вашу згоду.
Під час входу з паролем термінал зазвичай не показує ні введених символів, ні зірочок — це нормально. Після входу можна виконати whoami, щоб перевірити ім’я поточного користувача, і pwd, щоб побачити поточний каталог. Команда exit завершує сеанс.
Пароль чи ключ SSH — що вибрати?
Увійти за допомогою пароля просто, але служба, доступна з інтернету, може стати ціллю автоматизованих спроб підбору паролів. Для регулярного адміністрування вдалим вибором є ключ SSH. Однак він не звільняє від потреби захищати комп’ютер, на якому ви його зберігаєте.
Ключ SSH — це пара пов’язаних елементів: відкритий ключ ви розміщуєте на сервері, а приватний ключ залишається на вашому пристрої. Під час входу клієнт підтверджує, що має приватний ключ, не надсилаючи його на сервер. Не плутайте цю пару з ключем хоста, який ідентифікує сам сервер.
В OpenSSH пару ключів можна створити командою:
ssh-keygen -t ed25519
Установіть пароль для захисту приватного ключа й не перезаписуйте наявний ключ, не перевіривши, для чого він використовується. Файл із закінченням .pub містить відкритий ключ; додайте його за інструкцією провайдера. Файл із приватним ключем не надсилайте ні адміністратору, ні службі технічної підтримки.
Як уникнути помилок і втрати доступу?
Попередження про зміну ключа хоста може з’явитися після перевстановлення сервера, але також може означати підключення до іншого комп’ютера або спробу перехоплення обміну даними. Спочатку з’ясуйте причину в адміністратора. Видаляючи збережений ключ лише для того, щоб прибрати повідомлення, ви обходите важливу перевірку безпеки.
Для повсякденної роботи використовуйте обліковий запис з обмеженими правами замість облікового запису root, який має повний контроль над системою. Оновлюйте програмне забезпечення SSH і не виконуйте незнайомих команд, не розуміючи їхніх наслідків. Сама лише зміна порту не замінює належної автентифікації.
Якщо хочете вимкнути вхід за паролем, спочатку перевірте вхід за ключем у другому сеансі, залишивши перший відкритим. Перед зміною налаштувань також з’ясуйте, як скористатися аварійною консоллю провайдера — це допоможе не втратити доступ до сервера через помилку.
Дивіться також: Що таке CDN?
