Хостинг

Как добавить SSH-ключ на хостинге, если в панели нет такого раздела

Эдгар Косулин 6 мин чтения

Серия «Хостинг без магии» · часть 19 из 19

Содержание

8 ноября клиент написал в поддержку два коротких вопроса: «Подключите доступ по SSH» и следом «Как установить SSH-ключ?». Потом третий: «А где в ispmanager это?» Вопрос справедливый. Раздела «SSH-ключи» в панели нашего хостинга нет, и искать его бесполезно.

Он и не нужен. Ключ кладётся прямо в домашнюю папку вашей учётной записи на сервере, обычно одной командой со своего компьютера. Ниже по шагам: как это сделать на Linux, macOS и Windows, как пустить по ключу SFTP и что чаще всего мешает войти. А в конце о том, как в этом же обращении ошибся наш ИИ-помощник.

Зачем ключ, если есть пароль

На хостинге SSH-пароль совпадает с паролем от панели ispmanager. Это удобно, пока вы заходите в консоль руками. Неудобно, когда тот же пароль нужно положить в скрипт деплоя, в настройки редактора кода или в FTP-программу: он оседает в нескольких местах, а после смены пароля всё это перестаёт работать.

С ключом пароль в настройках не хранится. Сменили пароль от панели, а вход по ключу продолжает работать. Если ключ утёк вместе со старым ноутбуком, его удаляют из одного файла на сервере, и пароль менять не обязательно.

Как устроена пара ключей и почему её почти невозможно подобрать, мы подробно писали в статье SSH-ключи за 10 минут: настраиваем вход без пароля. Там речь о своём сервере с правами root. На хостинге прав root нет, поэтому часть шагов отличается.

Создайте ключ у себя на компьютере

Ключ создают на своём компьютере, не на хостинге. В терминале Linux или macOS, а на Windows 10 и 11 в PowerShell:

ssh-keygen -t ed25519

Путь, который предложит программа, оставьте как есть. Парольную фразу задать стоит: это защита самого файла ключа на случай, если его украдут с компьютера, а не пароль от хостинга.

Появятся два файла. id_ed25519 без расширения остаётся у вас, никуда его не отправляйте, в том числе в поддержку. id_ed25519.pub можно отдавать кому угодно: это одна строка, которая начинается с ssh-ed25519. На хостинг уходит только она.

Если у вас уже есть ключ, например для GitHub, новый создавать не обязательно. Подойдёт и старый, достаточно отнести на хостинг его .pub.

Положите ключ на хостинг одной командой

В Linux и macOS есть утилита ssh-copy-id, она делает всё сама:

ssh-copy-id -i ~/.ssh/id_ed25519.pub логин@isp.siteko.net

Вместо логин подставьте логин учётной записи хостинга, тот же, что для входа в панель. Команда один раз спросит пароль от панели, допишет ключ в файл ~/.ssh/authorized_keys на сервере и выставит нужные права. Дальше проверьте вход:

ssh логин@isp.siteko.net

Если сервер пустил без пароля (или спросил только парольную фразу ключа), всё готово.

Если ssh-copy-id нет: Windows и ручной способ

В Windows клиент ssh и ssh-keygen встроены, а ssh-copy-id нет. Ту же работу в PowerShell делает такая строка:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh логин@isp.siteko.net "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Можно и полностью вручную. Зайдите на хостинг по SSH с паролем и выполните:

mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo "ВАШ_КЛЮЧ" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

Вместо ВАШ_КЛЮЧ вставьте целиком строку из файла id_ed25519.pub, без переносов. Ключей в файле может быть несколько, по одному на строку: например, рабочий ноутбук, домашний компьютер и сервис, который выкладывает сайт.

Права здесь не формальность. Если папка .ssh или файл authorized_keys доступны на запись кому-то кроме вас, SSH-сервер молча проигнорирует ключ и снова спросит пароль. Поэтому chmod 700 и chmod 600 в команде обязательны.

SFTP по тому же ключу

SFTP работает поверх SSH: тот же сервер, тот же логин, тот же ключ. После того как ключ лёг в authorized_keys, FileZilla и WinSCP тоже можно пустить по нему, без пароля в настройках.

В FileZilla в менеджере сайтов выберите протокол SFTP и вход по файлу ключа, затем укажите файл id_ed25519. В WinSCP файл ключа указывают в расширенных настройках входа, в разделе SSH об аутентификации. Обе программы могут предложить перевести ключ в свой формат PuTTY: соглашайтесь, исходный файл при этом не меняется.

Так же работает вход по ключу из VS Code и PhpStorm, а скрипт деплоя по ключу перестаёт зависеть от пароля. Как выложить сайт через Git без FTP, мы разбирали в статье Деплой без FTP на виртуальном хостинге.

Почему не пускает

Логин от FTP вместо логина учётной записи

В панели можно завести отдельных FTP-пользователей, но SSH и SFTP их не знают: входить нужно под основным логином учётки. Именно на этом в начале ноября споткнулся другой клиент. Его SFTP-программа дважды попробовала войти под именем FTP-пользователя, и защита от подбора паролей заблокировала его адрес на сутки. Сразу понять, в чём дело, было невозможно: со стороны клиента это выглядело как «SFTP не работает».

После переустановки сервера в ночь на 8 ноября защиту мы смягчили. Теперь адрес блокируется на час, после третьего неудачного входа, и только при повторах дольше. Если ваш вход вдруг перестал отвечать вовсе, а с другого интернета (например, с телефона) он работает, напишите в поддержку, снимем блокировку.

SSH не входит в тариф

У нас SSH есть на тарифах Master и Expert, на Start и Optima его нет.

Ключ лёг не туда или с переносом строки

Проверьте, что вы подключаетесь под тем же логином, которому клали ключ, и что в authorized_keys ключ записан одной строкой. Подробности покажет ssh -v логин@isp.siteko.net: в выводе видно, какой ключ клиент предложил и что ответил сервер.

Вход по паролю выключить нельзя

На своём сервере после настройки ключа пароли обычно запрещают. На хостинге это настройка всего сервера, а не вашей учётки, поэтому пароль остаётся запасным способом войти. От перебора паролей сервер защищает та самая блокировка адресов.

Где ошибся наш ИИ-помощник

На первое сообщение клиента ответил наш ИИ-помощник, через несколько секунд. Он уверенно написал, что SSH уже включён, и дал адрес, логин и пароль. Это была неправда: SSH у этой учётной записи был выключен.

Помощник смотрел на тариф. На Master SSH положен, отсюда и вывод «включён». Но доступ включается не тарифом, а настройкой самой учётной записи в панели. У части учёток она осталась выключенной после переноса из старого биллинга, а при смене тарифа SSH сам не включался и не выключался.

На вопрос про ключ помощник ответил честнее: объяснил, как создать ключ, и прямо написал, что подтверждённой инструкции по добавлению ключа у него нет, поэтому путь в панели он выдумывать не станет и передаёт вопрос оператору. Оператор включил SSH и прислал те команды, что выше.

В тот же день мы поправили оба места. Помощник теперь проверяет, включён ли SSH у самой учётной записи в панели, а не только в тарифе, и если тариф его даёт, а учётка нет, зовёт оператора. При переходе на Master или Expert SSH включается сам, при переходе на Start или Optima выключается.

Как это устроено на Siteko. SSH и SFTP есть на тарифах Master и Expert. Сервер isp.siteko.net, порт 22, логин и пароль те же, что для входа в панель ispmanager. Ключи кладутся в ~/.ssh/authorized_keys вашей учётной записи, как описано выше, отдельного раздела в панели для этого нет. Если на Master или Expert SSH не пускает, напишите в поддержку: проверим учётку и включим доступ.

Если с консолью вы пока на «вы», начните со статьи SSH для тех, кто боится чёрного экрана. Зачем SSH нужен современным PHP-проектам и что ещё проверить на хостинге под Laravel, написано в статьях Современный PHP-хостинг: зачем Laravel и Symfony нужны SSH, Composer и Node.js и Переносим готовый Laravel-проект на хостинг.

Серия

Хостинг без магии

  1. 1. Как выбрать хостинг для сайта и не купить себе вторую работу
  2. 2. Виртуальный хостинг, VPS или облако: что действительно нужно вашему сайту
  3. 3. Гигабайты ничего не решают: как читать характеристики тарифа хостинга
  4. 4. «Безлимитный» хостинг: что заканчивается раньше дискового пространства
  5. 5. Домен подключён, а сайт не открывается: DNS без мистики
  6. 6. HTTPS включён, а браузер всё равно ругается: SSL без паники
  7. 7. Письма с сайта пропадают: SMTP, SPF, DKIM и DMARC на пальцах
  8. 8. Современный PHP-хостинг: зачем Laravel и Symfony нужны SSH, Composer, Node.js, cron и отдельная public-директория
  9. 9. Деплой без FTP на виртуальном хостинге: Git, Composer и безопасный откат
  10. 10. Ошибка 500 после загрузки сайта: где искать причину до обращения в поддержку
  11. 11. Сайт тормозит на хостинге: виноват тариф, код, база или внешний сервис
  12. 12. Бэкап есть, восстановить нельзя: проверяем резервные копии до аварии
  13. 13. Переезд на другой хостинг без потери сайта, писем и заказов
  14. 14. Когда виртуальный хостинг стал тесен: пора на VPS или ещё можно остаться
  15. 15. Коды подтверждения не приходят на почту: лимит отправки писем на хостинге
  16. 16. Старый сайт на PHP 5.4 после переезда на MySQL 8: «Got packets out of order» и как его оживить
  17. 17. Переносим готовый Laravel-проект на хостинг: почему не по FTP и что сделать после загрузки
  18. 18. Хостинг переехал на новый сервер за ночь: что мы сделали 7–8 ноября, что пошло не так и что проверить на своём сайте
  19. 19. Как добавить SSH-ключ на хостинге, если в панели нет такого раздела

Linux Безопасность Деплой

Поделиться: Telegram ВКонтакте

Новые статьи и разборы — в канале Siteko: Telegram MAX

Подписчикам: +30 дней к пробному хостингу, клиентам: +150 ₽ на баланс

Пошаговые инструкции по нашим услугам — в базе знаний

Ещё по теме

504 без видимой причины: один медленный запрос занимает общий пул PHP-процессов и кладёт соседние сайты. Что мы поменяли и что проверить у себя.

Хостинг 5 мин чтения

PHP2Shell: как мы закрывали уязвимость PHP на хостинге

Две критические уязвимости PHP, CVE-2026-109618 и CVE-2026-109619: какие версии затронуты, как закрыть дыру на хостинге и VDS и почему phpinfo может показывать старую версию.

Хостинг 9 мин чтения

Корпоративная почта: где её держать и сколько ящиков нужно на самом деле

Где держать корпоративную почту (на хостинге вместе с сайтом или в почтовом сервисе), сколько ящиков нужно на самом деле, кому принадлежат ящики сотрудников и при чём тут новый закон о цифровых почтовых ящиках.

«Почта на своём домене», часть 2