Що таке 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 found | Composer не встановлено глобально в середовищі 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