Что такое 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