SSH доступ к сайту KapsuleHost только по ключу, поэтому перед тем как открыть оболочку или SFTP-сессию, нужно зарегистрировать публичный ключ для сайта в KPanel. В этом руководстве описано, где находится эта страница, как добавить уже имеющийся ключ, как поручить KapsuleHost сгенерировать его за вас, и как отозвать ключ, которому вы больше не доверяете.
Где находится страница SSH-ключей
Откройте раздел Веб-сайты, выберите сайт, затем откройте группу Параметры в левом меню сайта и выберите SSH-ключи. Страница называется SSH доступ и содержит две вещи: данные для подключения к этому сайту и список публичных ключей, которым в данный момент разрешено их использовать.
В главной боковой панели нет отдельного пункта верхнего уровня для SSH. Ключи привязаны к конкретному сайту, поэтому ключ, добавленный здесь, подтверждает доступ только к этому сайту. Если у вас несколько сайтов, для каждого нужна своя запись, даже если это один и тот же ключ с вашего ноутбука.

Для добавления или отзыва ключа требуется разрешение sites:write. Если у вас командный аккаунт с ролью только для чтения, кнопка Добавить ключ и значок отзыва скрыты. Попросите владельца аккаунта или администратора внести изменение.
Данные для подключения
Карточка Данные для подключения в верхней части страницы показывает всё, что нужно вашему клиенту:
| Поле | Что это |
|---|---|
| Host | Имя хоста для подключения |
| Port | Порт SSH для этого сайта |
| Username | Системный пользователь, от имени которого работает сайт |
| SSH | Готовая команда ssh для этого сайта |
| SFTP | Готовая команда sftp для этого сайта |
У каждой строки есть элемент копирования, причём строки SSH и SFTP копируют всю команду целиком, а не только значение, так что можно сразу вставить её в терминал. Используйте именно их, а не набирайте команду вручную: в них уже указаны правильные пользователь, хост и порт.
Если карточка вообще не отображается, значит у сайта ещё не завершено создание пользователя оболочки. В этом случае API возвращает обычную ошибку Сайт не имеет SSH пользователя. Дождитесь, пока индикатор состояния сайта не покажет Active, и обновите страницу.
Добавление уже имеющегося ключа
У большинства людей уже есть пара ключей на своём компьютере. Добавьте сюда публичную половину.
- На своём компьютере выведите на экран публичный ключ. В macOS и Linux это обычно
cat ~/.ssh/id_ed25519.pub, либоcat ~/.ssh/id_rsa.pubдля более старого ключа RSA. В Windows с OpenSSH этоtype %USERPROFILE%\.ssh\id_ed25519.pub. - Скопируйте всю строку целиком, начинающуюся с
ssh-ed25519,ssh-rsaилиecdsa-sha2-nistp256. - В KPanel нажмите Добавить ключ.
- Введите в поле Label что-нибудь запоминающееся, например название машины, на которой хранится ключ.
- Вставьте публичный ключ во второе поле.
- Нажмите Добавить ключ.
Ключ сразу же появится в списке Authorised keys, с отпечатком под меткой. Подключиться можно немедленно.
KapsuleHost также отправляет письмо на адрес аккаунта при каждом добавлении ключа, указывая метку, отпечаток и сайт. Это сделано намеренно: SSH доступ требует высокого доверия, поэтому если появляется ключ, который вы не добавляли, отзовите его и сразу же смените пароль.
Вставляйте только файл .pub. Файл приватного ключа не имеет расширения .pub и начинается со строки вида -----BEGIN OPENSSH PRIVATE KEY-----. Если вы вставили именно его, значит это ваш приватный ключ, и его нужно сгенерировать заново, а не использовать повторно.
Если у вас ещё нет ключа
Сгенерируйте его локально с помощью ssh-keygen -t ed25519 -C "your-label", примите расположение файла по умолчанию и задайте пароль-фразу при запросе. В результате получится ~/.ssh/id_ed25519 (храните его в тайне) и ~/.ssh/id_ed25519.pub (вставьте именно его).
Поручить KapsuleHost сгенерировать пару ключей
Если вы не хотите запускать ssh-keygen, KPanel может создать пару за вас.
- Нажмите Добавить ключ.
- Заполните поле Label. Поле публичного ключа оставьте пустым.
- Нажмите Создать пару ключей.
KapsuleHost создаёт пару Ed25519, устанавливает публичную половину для сайта и показывает зелёный баннер: Пара ключей создана: загрузите приватный ключ сейчас. Нажмите Загрузить .pem, чтобы сохранить приватный ключ. Файл будет назван по выбранной вами метке.
Приватный ключ показывается один-единственный раз. Баннер прямо об этом предупреждает: это единственная возможность его скачать. KapsuleHost не хранит копию, которую можно получить позже. Если вы закрыли баннер, не скачав ключ, отзовите его и сгенерируйте новую пару.
У сгенерированного ключа нет пароля-фразы, что и позволяет использовать его из скрипта без запроса. Это также означает, что сам файл является единственным удостоверением доступа. Если вам нужен пароль-фраза, сгенерируйте пару самостоятельно с помощью ssh-keygen и вставьте публичную половину.
После скачивания переместите файл в подходящее место и ужесточите права доступа к нему, поскольку SSH отказывается использовать приватный ключ, доступный для чтения всем:
mv ~/Downloads/my-laptop_id_ed25519.pem ~/.ssh/kapsule-mysite.pem
chmod 600 ~/.ssh/kapsule-mysite.pem
ssh -i ~/.ssh/kapsule-mysite.pem <username>@<host> -p <port>
Подставьте имя пользователя, хост и порт из карточки Данные для подключения.
Чтение списка авторизованных ключей
Каждая строка в Authorised keys показывает:
- Метку, которую вы дали ключу.
- Отпечаток ключа, по которому можно отличить два похожих ключа друг от друга.
- Added с датой регистрации.
- Последнее использование с датой последней аутентификации, либо Ни разу не использовался, если ключ ещё ни разу не использовался.
Столбец Последнее использование особенно полезен при чистке списка. Ключ, который никогда не использовался или не использовался уже несколько месяцев, обычно относится к заменённому ноутбуку или подрядчику, который уже не работает с вами.
Отзыв ключа
Нажмите на красный значок корзины в строке ключа. KPanel попросит подтвердить действие сообщением Отозвать SSH ключ? с примечанием, что ключ больше не будет работать для этого сайта. Нажмите Revoke, чтобы завершить.
Отзыв действует на новые подключения. Уже открытая SSH-сессия не завершается при отзыве ключа, поэтому если вы убираете доступ у человека, который, возможно, всё ещё подключён, отзовите ключ, а затем смените всё, до чего он мог добраться: пароли баз данных, секреты приложений и любые токены, хранящиеся на сайте.
Держите список ключей коротким. Один ключ на машину, с меткой с именем машины, проверять гораздо проще, чем кучу ключей с названиями вроде "key1", "new key" и "temp".
Устранение неполадок
Permission denied (publickey). Самая частая причина: ваш клиент предлагает серверу не тот ключ, который вы зарегистрировали. Принудительно укажите нужный ключ с помощью ssh -i /path/to/private_key ..., либо проверьте с помощью ssh -v, какие ключи предлагаются.
Connection refused или тайм-аут. Убедитесь, что вы используете порт, указанный в Данные для подключения, а не порт по умолчанию 22. Копируйте команду SSH прямо со страницы, а не набирайте её вручную.
Bad permissions на приватном ключе. OpenSSH отказывается использовать приватный ключ, который могут читать другие пользователи. Выполните chmod 600 для этого файла.
Ключ работает для SSH, но не для SFTP. Они используют одни и те же учётные данные, поэтому дело почти всегда в клиенте, а не в ключе. Используйте команду SFTP, скопированную со страницы: в ней уже указан правильный порт.
Что дальше
- Загрузка файлов через SFTP описывает передачу файлов с использованием тех же учётных данных.
- Подключение к вашей базе данных через SSH-туннель использует только что добавленный ключ для доступа к MySQL из настольного клиента.
- Журнал активности сайта фиксирует каждый добавленный ключ, так что позже можно проверить, кто и когда что добавил.