BLACKBOXЦентр помощи

Доступ к серверу для коллег и внешних разработчиков

Как дать доступ к серверу коллеге или фрилансеру, не передавая аккаунт, пароль root и токены: SSH-ключи, отдельные пользователи, доступ только по SFTP и отзыв доступа.

общееОбновлено 2026-10-09~11 мин чтения
На этой странице

В этом руководстве — как дать доступ к серверу коллеге или внешнему разработчику, не передавая аккаунт blackbox.md, пароль root и API-токены. Ключ коллеги для root добавляется в панели app.blackbox.md, в карточке сервера на странице «Мои серверы» (app.blackbox.md/my-servers, левое меню «Инфраструктура» → «Мои серверы»). Отдельные пользователи и доступ только по SFTP настраиваются на самом сервере по SSH под root.

Доступно: владельцу аккаунта blackbox.md, который заказал сервер, или аккаунту, которому BLACKBOX выдал права на управление сервером (действия в панели), а также всем, у кого есть доступ root к серверу по SSH (действия на сервере). В карточках с отметкой «Обслуживается» кнопок «Добавить SSH-ключ» и «Сбросить пароль» нет — по таким серверам напишите нам.

Что есть в аккаунте и панели

  • В аккаунте blackbox.md и в панели нет участников команды, подпользователей, ролей и приглашений, которые мог бы отправить клиент. Каждый человек пользуется собственным аккаунтом blackbox.md.
  • Коллега со своим аккаунтом не видит ваших заказов, счетов, тикетов и серверов и не может войти в панель вместо вас. Для доступа по SSH или SFTP аккаунт ему не нужен.
  • Общий доступ к серверам компании, которые обслуживает BLACKBOX (карточки «Обслуживается»), открывается только по запросу через поддержку: Страница «Обзор» (Overview).
  • Список «Установленные ключи» и кнопка «Добавить SSH-ключ» работают только с файлом /root/.ssh/authorized_keys. Ключами других пользователей Linux управляйте прямо на сервере.

Что нельзя передавать никогда

Не передавайте Почему
Пароль аккаунта blackbox.md С ним оформляют и оплачивают заказы, открывают панель и создают API-токены.
Пароль root Даёт полный контроль над сервером, а при общем пароле не видно, кто именно работал.
API-токены (bbx_pat_…) Действуют от имени владельца аккаунта: с разрешением servers:exec выполняют любые команды от root, с orders:write оформляют заказы и платят с баланса (Разрешения токенов (scopes)).
Коды восстановления 2FA Заменяют код из приложения-аутентификатора при входе в панель.
Приватные SSH-ключи Приватный ключ не покидает компьютер владельца: не отправляйте свой и не принимайте чужой.

Согласно Условиям использования (§3), вы несёте полную ответственность за действия всех, кому открываете доступ к услугам (сотрудников, подрядчиков), и за защиту паролей, SSH-ключей и API-токенов.

Коллега сам создаёт пару ключей (Создание SSH-ключа (Windows, macOS, Linux)) и присылает вам только публичный ключ — одну строку из файла .pub. Попросите его указать в комментарии ключа своё имя, чтобы вы узнали ключ в списке «Установленные ключи»:

ssh-keygen -t ed25519 -C "ИМЯ_КОЛЛЕГИ"

Попросите и отпечаток ключа, чтобы сверить его с тем, что окажется на сервере. В macOS и Linux:

ssh-keygen -lf ~/.ssh/id_ed25519.pub

В Windows (PowerShell):

ssh-keygen -lf $env:USERPROFILE\.ssh\id_ed25519.pub

Какой доступ выбрать

Что нужно коллеге Решение Где
Полное администрирование сервера Его публичный ключ для root, добавленный через «Добавить SSH-ключ» → «Вставить новый ключ»; удаляется в списке «Установленные ключи» панель
Администрирование под собственным логином, чтобы было видно, кто что сделал Отдельный пользователь Linux в группе sudo (Ubuntu, Debian) или wheel (AlmaLinux, CentOS Stream) сервер
Только файлы сайта Пользователь только для SFTP, ограниченный каталогом сайта сервер
Только база данных Отдельный пользователь без sudo и SSH-туннель (Базы данных: MariaDB/MySQL и PostgreSQL) сервер

Ключ коллеги для root через панель

  1. В карточке сервера на странице «Мои серверы» нажмите «Добавить SSH-ключ».

  2. Выберите «Вставить новый ключ» и вставьте строку, полученную от коллеги (ssh-ed25519 AAAA… ИМЯ_КОЛЛЕГИ).

  3. Нажмите «Добавить ключ». Появится «Ключ добавлен.», а ключ с его комментарием — в списке «Установленные ключи».

  4. Сравните начало отпечатка в списке с отпечатком, который прислал коллега.

  5. Коллега подключается так:

    ssh root@IP_СЕРВЕРА

Вставленный ключ устанавливается только на этот сервер и в вашем аккаунте не сохраняется. Подробнее о списке и сообщениях: Добавление и удаление SSH-ключей на сервере.

Важно Ключ для root — это полный контроль: коллега сможет читать любые данные, добавлять другие ключи и пользователей и менять любые настройки. Попросите его не удалять «Ключ управления (blackbox.md)» и не ставить PermitRootLogin no: и то и другое отключает в панели сброс пароля, управление ключами и кнопки входа по паролю (Ключи BLACKBOX на вашем сервере).

Отдельный пользователь Linux для коллеги

У отдельного пользователя собственный логин: в журналах видны его имя и команды, выполненные через sudo. Шаги похожи на шаг 5 из статьи Защита нового сервера: чек-лист, только на сервер попадает ключ коллеги, а не ключи root. Выполняйте команды под root.

Ubuntu и Debian

adduser --disabled-password ИМЯ_ПОЛЬЗОВАТЕЛЯ

Команда создаёт и каталог /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ. Запрашиваемые поля (полное имя, телефон и т. д.) можно оставить пустыми. Пароля у пользователя нет — он входит только по ключу.

AlmaLinux и CentOS Stream

useradd -m ИМЯ_ПОЛЬЗОВАТЕЛЯ

Здесь пароль тоже не задаётся — пользователь входит только по ключу.

Публичный ключ коллеги

  1. Создайте каталог и откройте файл ключей:

    mkdir -p /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh
    nano /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/authorized_keys

    Если nano нет (так бывает в AlmaLinux и CentOS Stream), установите его:

    dnf install -y nano
  2. Вставьте одной строкой публичный ключ коллеги, сохраните (Ctrl + O, затем Enter) и выйдите (Ctrl + X).

  3. Назначьте владельца и права доступа:

    chown -R ИМЯ_ПОЛЬЗОВАТЕЛЯ:ИМЯ_ПОЛЬЗОВАТЕЛЯ /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh
    chmod 700 /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh
    chmod 600 /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/authorized_keys

    В AlmaLinux и CentOS Stream также восстановите метку SELinux:

    restorecon -R /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh
  4. Сверьте выведенный отпечаток с тем, что прислал коллега:

    ssh-keygen -lf /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/authorized_keys

Не копируйте новому пользователю файл /root/.ssh/authorized_keys: в нём ваши ключи и ключи BLACKBOX.

Права администратора (только если они нужны)

Участники группы sudo (Ubuntu, Debian) или wheel (AlmaLinux, CentOS Stream) могут выполнять любые команды от имени root. sudo запрашивает пароль пользователя, поэтому задайте его.

Ubuntu и Debian:

passwd ИМЯ_ПОЛЬЗОВАТЕЛЯ
usermod -aG sudo ИМЯ_ПОЛЬЗОВАТЕЛЯ

Если в Debian нет команды sudo, установите её:

apt install -y sudo

AlmaLinux и CentOS Stream:

passwd ИМЯ_ПОЛЬЗОВАТЕЛЯ
usermod -aG wheel ИМЯ_ПОЛЬЗОВАТЕЛЯ

Передайте пароль отдельно от остальных данных для доступа и попросите коллегу сменить его командой passwd при первом входе. На сервере с отметкой «Пароль + ключ» с этим паролем коллега сможет войти и по SSH; как перевести сервер в режим «Только ключ»: Включение и отключение входа по паролю по SSH. Команды, выполненные через sudo, видны в журнале:

journalctl _COMM=sudo

Первое подключение

Проверьте вход вместе с коллегой до того, как передать ему доступ, не закрывая свою сессию root. В ней следите за журналом SSH. В Ubuntu и Debian:

journalctl -u ssh -f

В AlmaLinux и CentOS Stream:

journalctl -u sshd -f

Коллега подключается:

ssh ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА

В журнале появится строка Accepted publickey for ИМЯ_ПОЛЬЗОВАТЕЛЯ с отпечатком ключа; остановите просмотр клавишами Ctrl + C. Если вы дали права администратора, коллега выполняет команду ниже — она должна вывести root:

sudo whoami

На сервере «Только ключ» коллега входит только по ключу. Не включайте ради него вход по паролю: кнопка «Включить вход по паролю» включает его для всех пользователей, в том числе для root.

Только база данных

Создайте пользователя, как описано выше, без прав администратора. Чтобы он мог открыть только туннель, но не терминал:

usermod -s /usr/sbin/nologin ИМЯ_ПОЛЬЗОВАТЕЛЯ

Коллега запускает туннель под своим именем пользователя (для PostgreSQL замените 3306 на 5432):

ssh -N -L 3306:127.0.0.1:3306 ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА

Туннель идёт через порт SSH (22), поэтому открывать порт базы данных не нужно. В самой базе данных создайте для него отдельного пользователя только с нужными правами: Базы данных: MariaDB/MySQL и PostgreSQL.

Доступ только по SFTP к файлам сайта (необязательно)

Коллега сможет только загружать и скачивать файлы в каталоге сайта: терминала у него нет, туннели открыть нельзя. В примере сайт находится в /var/www/ДОМЕН. SSH ограничивает коллегу каталогом /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ: он принадлежит root, и коллега не может его изменить. Внутри него подкаталог site показывает каталог сайта — туда коллега может записывать файлы.

На тарифах «VPS hosting» сначала спросите поддержку: у панели управления на сервере могут быть свои учётные записи и настройки SFTP (Тарифы «VPS hosting» с панелью управления).

Внимание Шаги 4 и 5 меняют настройки SSH. Не закрывайте текущую сессию root, пока снова не войдёте как root из нового терминала. Веб- и VNC-консоли у клиентов нет: если доступ по SSH потерян, помочь может только поддержка.

  1. Создайте группу (один раз для всех пользователей SFTP) и пользователя.

    Ubuntu и Debian:

    groupadd sftponly
    adduser --disabled-password --shell /usr/sbin/nologin ИМЯ_ПОЛЬЗОВАТЕЛЯ
    usermod -aG sftponly ИМЯ_ПОЛЬЗОВАТЕЛЯ

    AlmaLinux и CentOS Stream:

    groupadd sftponly
    useradd -m -s /usr/sbin/nologin -G sftponly ИМЯ_ПОЛЬЗОВАТЕЛЯ

    Затем добавьте ключ коллеги, как в разделе «Публичный ключ коллеги» выше.

  2. Создайте каталог коллеги и сделайте копию файла /etc/fstab:

    mkdir -p /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site
    chown root:root /srv/sftp /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ
    chmod 755 /srv/sftp /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ
    cp /etc/fstab /etc/fstab.bak
    nano /etc/fstab

    В конец файла /etc/fstab добавьте строку ниже и сохраните:

    /var/www/ДОМЕН /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site none bind,nofail 0 0

    Смонтируйте каталог сайта и проверьте, что видны его файлы:

    systemctl daemon-reload
    mount /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site
    ls /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site

    Строка в /etc/fstab восстанавливает монтирование после каждой перезагрузки. Благодаря nofail ошибка в ней не помешает серверу загрузиться.

  3. Разрешите запись в каталог сайта. Файлы сайта должны принадлежать пользователю веб-сервера: Передача файлов на сервер (scp, rsync, SFTP), раздел «После загрузки сайта: владелец и права доступа». Узнайте их группу:

    stat -c '%U:%G' /var/www/ДОМЕН

    Обычно результат — www-data:www-data в Ubuntu и Debian и apache:apache или nginx:nginx в AlmaLinux и CentOS Stream. Если вы видите root:root, сначала смените владельца, как описано в указанном разделе. Затем выполните команды ниже, подставив вместо ВЕБ_ГРУППА группу, указанную после ::

    usermod -aG ВЕБ_ГРУППА ИМЯ_ПОЛЬЗОВАТЕЛЯ
    chmod -R g+w /var/www/ДОМЕН
    find /var/www/ДОМЕН -type d -exec chmod g+s {} +

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

  4. Сделайте копию настроек SSH и откройте основной файл:

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    nano /etc/ssh/sshd_config

    Добавьте в конец файла блок ниже и сохраните:

    Match Group sftponly
        ChrootDirectory /srv/sftp/%u
        ForceCommand internal-sftp -d /site
        AllowTcpForwarding no
        X11Forwarding no

    Блок должен оставаться последним в файле: всё, что идёт после Match, действует только для группы sftponly. Вместо %u подставляется имя пользователя, а -d /site сразу открывает коллеге каталог сайта.

    • Не добавляйте в блок PasswordAuthentication: входом по паролю вы управляете из панели.
    • Не ставьте PermitRootLogin no и не меняйте файл, который панель записывает в /etc/ssh/sshd_config.d/.
  5. Проверьте настройки:

    sshd -t

    Если команда ничего не вывела, настройки в порядке. Только после этого перезагрузите конфигурацию SSH:

    systemctl reload ssh || systemctl reload sshd

    Если sshd -t выводит ошибку, не перезагружайте SSH: исправьте файл или восстановите копию, затем снова проверьте его командой sshd -t.

    cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  6. Из нового терминала проверьте, что по-прежнему входите как root. Затем попросите коллегу подключиться SFTP-клиентом, например FileZilla или WinSCP, с пользователем ИМЯ_ПОЛЬЗОВАТЕЛЯ и своим ключом, или из терминала:

    sftp ИМЯ_ПОЛЬЗОВАТЕЛЯ@IP_СЕРВЕРА

    Коллега попадёт в /site и не увидит ничего за пределами каталога /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ. Если он попробует войти через ssh, то получит «This service allows sftp connections only.», и соединение закроется.

Если что-то не работает, посмотрите последние сообщения службы SSH. В Ubuntu и Debian:

journalctl -u ssh -n 50

В AlmaLinux и CentOS Stream:

journalctl -u sshd -n 50
Проблема Причина Что делать
Соединение сразу закрывается, в журнале bad ownership or modes for chroot directory /srv/sftp или /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ не принадлежит root либо доступен для записи другим Повторите команды chown и chmod из шага 2
Permission denied при загрузке файла Коллега не входит в группу веб-сервера или каталог не разрешает запись группе Повторите шаг 3; коллега переподключается, чтобы новая группа вступила в силу
Каталог /site пуст Каталог сайта не смонтирован Снова выполните команду mount из шага 2
AlmaLinux или CentOS Stream: вход не удаётся, сообщений выше нет Возможно, доступ блокирует SELinux Ищите причину в журнале службы sshd (команда выше); если не найдёте, напишите нам

Отзыв доступа

Когда работа закончена или человек уходит, сразу закройте ему доступ.

Ключ для root

  1. В карточке сервера нажмите «Добавить SSH-ключ».
  2. В списке «Установленные ключи» найдите ключ коллеги по комментарию и отпечатку и нажмите «Удалить».
  3. Подтвердите «Удалить ключ SHA256:… с этого сервера?» кнопкой «OK». Появится «Ключ удалён.»
  4. Нажмите «Сбросить пароль» и подтвердите «Сбросить пароль для ИМЯ_СЕРВЕРА? Текущий пароль перестанет работать немедленно.»: пока у коллеги был доступ, он мог сменить пароль root (Сброс пароля root).

Отдельный пользователь

Завершите его открытые сессии:

pkill -KILL -u ИМЯ_ПОЛЬЗОВАТЕЛЯ

Затем удалите пользователя вместе с его каталогом. Ubuntu и Debian:

deluser --remove-home ИМЯ_ПОЛЬЗОВАТЕЛЯ

AlmaLinux и CentOS Stream (а также Ubuntu или Debian, если deluser требует пакет perl):

userdel -r ИМЯ_ПОЛЬЗОВАТЕЛЯ

Пользователь только для SFTP

Сначала завершите его сессии командой pkill, как описано выше. Прежде чем удалять пользователя, размонтируйте каталог сайта, удалите его строку из /etc/fstab и уберите опустевшие каталоги:

umount /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site
nano /etc/fstab
rmdir /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ/site /srv/sftp/ИМЯ_ПОЛЬЗОВАТЕЛЯ

Опасно Не используйте rm -r в /srv/sftp. Пока каталог сайта там смонтирован, команда удалит сами файлы сайта. rmdir удаляет только пустые каталоги, поэтому откажется работать, если монтирование ещё активно.

Проверки после ухода

  1. Поищите ключи, пользователей и права администратора, которых вы не узнаёте. В списке «Установленные ключи» видны только ключи root.

    cat /root/.ssh/authorized_keys
    ls -la /home/*/.ssh/authorized_keys
    ls -la /etc/sudoers.d/
    getent group sudo wheel
  2. Смените секреты, которые знал этот человек: пароли баз данных (и удалите созданного для него пользователя базы), ключи приложений — например, в .env или wp-config.php, пароли SMTP и ключи внешних сервисов.

  3. Проверьте недавние входы:

    last -n 20

    В Ubuntu и Debian:

    journalctl -u ssh --since "30 days ago" | grep Accepted

    В AlmaLinux и CentOS Stream:

    journalctl -u sshd --since "30 days ago" | grep Accepted

    В строках Accepted указаны пользователь, IP-адрес и способ входа. Если команды last нет, используйте только journalctl.

Если вы подозреваете, что доступом злоупотребили, следуйте статье Сервер взломан или атакован: что делать.

Частые вопросы

Может ли коллега видеть сервер в своей панели? Нет. Сервер, заказанный на blackbox.md, виден только в аккаунте, из которого его заказали, и поделиться им в панели нельзя. Общий доступ возможен только к серверам компании, которые обслуживает BLACKBOX, — по запросу через поддержку (Как связаться с поддержкой BLACKBOX).

Фрилансер просит пароль root или данные аккаунта. Что делать? Не передавайте их. Добавьте его публичный ключ для root или создайте ему отдельного пользователя. Если вы уже передали эти данные, нажмите «Сбросить пароль» в карточке сервера и смените пароль аккаунта — это заодно отключит API-токены, созданные раньше (Рекомендации по безопасности аккаунта). Затем выполните проверки из раздела «Проверки после ухода».

Как узнать, чей ключ в списке «Установленные ключи»? В списке видны начало отпечатка, тип и комментарий ключа. Попросите коллегу указать своё имя в комментарии при создании ключа и сверьте отпечаток с тем, что он прислал: комментарий может написать кто угодно, а отпечаток подделать нельзя.

Можно ли дать коллеге API-токен для AI-ассистента? Не делайте этого. Токен действует от вашего имени как владельца аккаунта: с servers:exec он выполняет команды от root на всех ваших серверах, с orders:write оформляет заказы и платит с баланса. Коллега работает через собственный доступ по SSH.

Нужен ли коллеге аккаунт на blackbox.md? Нет. Для SSH или SFTP достаточно его ключа и доступа, который вы открыли на сервере. Собственный аккаунт не покажет ему ваши серверы.

Не нашли ответ?Напишите нам — служба поддержки ответит. support@blackbox.md
Открыть тикет