До основного вмісту

SSH-доступ на хостингу cPanel: ключі та jailshell

Хостинг та cPanel · · Оновлено · 5 хв читання
Ілюстрація до статті «SSH-доступ на хостингу cPanel: ключі та jailshell»

Що таке SSH-доступ на віртуальному хостингу

SSH-доступ на shared-хостингу відрізняється від доступу на VDS: замість повноцінної оболонки з root-правами користувач потрапляє в jailshell — ізольоване середовище, обмежене його домашньою директорією. Це захищає інших клієнтів на тому самому сервері: ви не бачите чужі файли і не можете змінювати системні налаштування.

Такого доступу достатньо для git-деплою, запуску composer, wp-cli, npm-скриптів збірки та звичайної роботи з файлами через rsync або scp — усе, що не потребує зміни версії ядра або встановлення системних пакетів.

Як увімкнути SSH-доступ у cPanel

У розділі «Security» відкрийте «SSH Access» → «Manage SSH Keys». Якщо пункту немає в інтерфейсі, доступ по SSH для акаунта вмикає підтримка хостингу за заявкою в тікет — на більшості тарифів функція доступна одразу, але може бути вимкнена за замовчуванням із міркувань безпеки.

Дані для підключення: ім'я хоста або IP сервера, ім'я користувача cPanel і порт SSH — зазвичай нестандартний, відмінний від 22. Точний порт вказаний у розділі «SSH Access» або в листі з даними акаунта.

Підключення за SSH-ключем

Пароль для SSH використовувати не варто — ключова пара надійніша і не боїться перебору. Згенеруйте пару на своєму комп'ютері:

ssh-keygen -t ed25519 -C "deploy@example.com" -f ~/.ssh/zevshost_key

Публічний ключ (файл з розширенням .pub) додайте в cPanel через «Manage SSH Keys» → «Import Key», вставивши його вміст цілком. Після імпорту натисніть «Authorize» навпроти ключа — без цього кроку сервер продовжить просити пароль.

Підключення з явною вказівкою ключа і порту:

ssh -i ~/.ssh/zevshost_key -p 2222 username@example.com

Що доступно в jailshell, а що ні

ДіяДоступно
Робота з файлами всередині своєї директоріїТак
git clone, composer, npm, wp-cliТак
rsync і scp між серверамиТак
sudo і встановлення системних пакетівНі
Перегляд процесів інших користувачівНі
Зміна версії PHP з консоліНі, лише через MultiPHP Manager

Версію PHP для CLI-скриптів у jailshell бере значення, виставлене в MultiPHP Manager для домену — командою php -v можна лише перевірити поточну версію, а не змінити її.

Типові команди у щоденній роботі

Перевірка зайнятого місця і структури сайту після підключення:

cd ~/public_html
du -sh * | sort -rh | head -10

Оновлення залежностей проєкту на PHP і запуск відкладеного завдання через cron вручну для перевірки:

composer install --no-dev --optimize-autoloader
php artisan schedule:run

Підсумок: чек-лист безпечної роботи по SSH

  • Вимкніть вхід за паролем там, де це дозволяє панель, і використовуйте лише ключ.
  • Зберігайте приватний ключ поза репозиторієм і не пересилайте його в месенджерах.
  • Вказуйте нестандартний порт SSH з листа з даними акаунта, а не порт 22.
  • Пам'ятайте: jailshell не дає root — частина команд зі встановлення ПЗ не працюватиме.
  • Для зміни PHP використовуйте MultiPHP Manager, а не змінні середовища в shell.

Типові помилки SSH-доступу на shared

ПовідомленняПричина
Permission denied (publickey)Приватний ключ на компʼютері не відповідає завантаженому публічному, або публічний ключ додано, але для нього не натиснуто кнопку Authorize в cPanel
Connection refused на порту 22На shared-хостингу SSH майже ніколи не слухає порт 22 — потрібен нестандартний порт з листа з даними акаунта або розділу SSH Access
This service allows sftp connections onlyАкаунту увімкнено лише SFTP без повноцінної оболонки — потрібно запросити активацію shell-доступу у підтримки хостингу
bash: composer: command not foundComposer не встановлено глобально в середовищі jailshell; використовуйте локальний composer.phar або вбудований Composer з MultiPHP Manager
sudo: command not foundЦе очікувана поведінка jailshell, а не помилка — sudo фізично відсутній в ізольованому середовищі, підвищення прав тут неможливе в принципі

Коли SSH на shared-хостингу перестає вистачати

  • Потрібен власний демон, що постійно слухає порт (черга завдань, WebSocket-сервер) — jailshell не дозволяє тримати довгоживучі процеси поза лімітами спільного тарифу
  • Потрібне встановлення системних пакетів або розширень PHP за межами стандартного набору хостингу — для цього потрібен root, якого в jailshell немає і не може бути
  • Потрібен повний контроль над мережевими налаштуваннями — власні правила файрвола, кастомний DNS-резолвер, зміна ядра — все це доступно лише на VDS
  • Збірка фронтенду (npm run build на великому проєкті) впирається в ліміти CPU і памʼяті спільного тарифу — процес просто обривається за лімітом, і збільшити його для jailshell не можна

Перевірка результату

Після налаштування підключення переконайтеся, що ключ справді працює і ви перебуваєте саме в jailshell, а не отримали відмову мовчки. Якщо можливостей jailshell не вистачає і потрібен перехід на VDS, почніть зі статті про підключення до VDS по SSH; для FTP як альтернативного каналу — стаття про налаштування FTP в cPanel.

# Підключитися в докладному режимі і побачити, який ключ справді використано
ssh -v -i ~/.ssh/zevshost_key -p 2222 username@example.com

# Переконатися, що ви в jailshell, а не отримали повноцінний root-шелл
whoami && ulimit -a
Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці