К основному содержимому

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

Хостинг и cPanel · 29.09.2026 · 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
Статья помогла?
← Назад в базу знаний Задать вопрос поддержке