MeshCentral это открытая бесплатная система для удаленного доступа и управления устройствами через веб интерфейс. Является отличной self-hosted альтернативной таким известным средствам удаленного доступа к рабочим столам компьютеров через Интернет, как TeamViewer и AnyDesk. Позволяет легко организовать удобный безопасный удаленный доступ к рабочим столам клиентов через собственную инфраструктуру, не используя чужие облака и проприетарное ПО. Легковесные агенты MeshCentral доступны для различных платформ, включая Windows, Linux, macOS, Android. MeshCentral позволяет прозрачно работать с клиентами за NAT и в защищенных сетях. В статье мы рассмотрим, как установить и настроить сервер MeshCentral для оказания удаленной ИТ поддержки на отдельном VPS сервер с Debian или Ubuntu.
Ключевые особенности и возможности MeshCentral
- Полностью self-hosted решение с полным контролем за данными
- Кроссплатформенность
- Веб-консоль управления – всё управление и подключение к рабочим столам удаленных компьютеров выполняется через браузер
- Легкий сервер и агенты, с возможностью обслуживания сотен и тысяч клиентов
- Шифрование сессий между клиентом и сервером
- Многопользовательский доступ, разграничение прав доступа по группам и устройствам
- Инвентаризация и контроль состояния клиентов
- Удаленный доступ к рабочим столам клиентов
- Удаленный терминал (доступ к shell)
- Файловый менеджер
- Удаленное управление, включая возможность выключить компьютер или включить через Wake-on-LAN
- Позволяет работать как в рамках только локальной сети организации, так и через интернет, включая доступ к клиентам за NAT и файерволами
Установка и настройка сервера MeshCentral
В простой конфигурации для сервера MeshCentral достаточно выделить отдельную виртуальную машину или VPS с минимум 1 vCPU и 1 Гб RAM.
Сервер MeshCentral написан на JavaScript на базе фрейморка Node.js и доступен для установки через NPM репозиторий. Мы рассмотрим официальный способ установки сервера MeshCentral через NPM и запуск в качестве системной службы systemd. Затем мы опубликуем веб-сервер управления MeshCentral обратный прокси Nginx с бесплатным сертификатом Let’s Encrypt (допустимо развертывание MeshCentral в контейнере docker, но это уже за рамками этой статьи).
Итак, начинаем с обновления пакетов Debian:
$ sudo apt update && sudo apt upgrade -y
Устанавливаем необходимые утилиты (если отсутствуют):
$ sudo apt install -y curl nano ufw build-essential
Открыть порт TCP/443 в файерволе:
$ sudo ufw allow 443/tcp
$ sudo ufw reload
Версия Node.js в репозитории Debian слегка устаревшая, поэтому подключаем официальный репозитория и ставим LTS версию Node.js 22 вручную:
$ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash –
$ sudo apt update
Устанавливаем Node.js и пакетный менеджер NPM:
$ sudo apt install nodejs
Проверьте установленные версии hodejs и npm (они должны успешно отобразиться):
$ node -v
$ npm -v

Создадим отдельного пользователя для запуска MeshCentral:
$ sudo useradd -m -r -d /opt/meshcentral -s /bin/bash meshcentral
Создаем директорию для файлов meshcentral и предоставляем права пользователю:
$ sudo mkdir -p /opt/meshcentral
$ sudo chown -R meshcentral:meshcentral /opt/meshcentral
$ cd /opt/meshcentral
Устанавливаем MeshCentral под пользователем в эту директорию:
$ sudo -u meshcentral npm install meshcentral
Можно попробовать запустить сервер MeshCentral:
$ sudo -u meshcentral node ./node_modules/meshcentral

При первом запуске приложение сгенерирует конфигурационные файлы и сертификаты. По умолчанию сервис MeshCentral HTTPS при запуске из-под непривилегированного пользователя запускается на порту 1024+. В нашем случае он запустился на TCP/1025.
WARNING: Server running without permissions to use ports below 1025. MeshCentral HTTPS server running on port 1025.

Мы планируем оставить MeshCentral работать на этом порту, но опубликовать его через nginx в качестве реверс-прокси и SSL-сертификатами Let’s Encrypt, автоматически полученными через Certbot. Устанавливаем Nginx и клиент Certbot для автоматического получения и продления SSL-сертификатов Let’s Encrypt:
$ sudo apt install -y nginx certbot python3-certbot-nginx
Настраиваем получение сертификатов для вашего домена, на котором будет доступен сервис MeshCentral:
$ sudo certbot certonly --nginx -d msh.winitpro.ru
Если по какой-то причине вы не сможете проверить владение домена через порт 80 (HTTP-01), можно выполнить проверку домена через DNS. Для этого запросите выпуск сертификата через DNS-01 проверку, при которой Certbot попросит вас создать проверочную TXT-запись в DNS зоне вашего домена (acme-challenge.msh.winitpro.ru):
$ sudo certbot certonly --manual --preferred-challenges dns -d msh.winitpro.ru -v

Выпущенные сертификат fullchain.pem и закрытый ключ privkey.pem будут сохранены в директорию
/etc/letsencrypt/live/msh.winitpro.ru
:

Добавим конфигурационный файл Nginx:
$ sudo nano /etc/nginx/conf.d/meshcentral.conf
server {
listen 443 ssl http2;
server_name msh.winitpro.ru;
# SSL сертификаты Let's Encrypt
ssl_certificate /etc/letsencrypt/live/msh.winitpro.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/msh.winitpro.ru/privkey.pem;
# Настройка параметров безопасности TLS/SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:1025;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo nginx -t
$ sudo systemctl restart nginx
Настройки сервера MeshCentral задаются в конфигурационном файле config.json. Редактируем этот файл и приводим к следующей конфигурации:
$ sudo nano /opt/meshcentral/meshcentral-data/config.json
{
"$schema": "https://githubusercontent.com",
"settings": {
"cert": "msh.winitpro.ru",
"port": 1025,
"aliasPort": 443,
"redirPort": false,
"redundantToken": true,
"trustedProxy": "127.0.0.1",
"tlsoffload": true,
"ignoreAgentCertificateErrors": true
},
"domains": {
"": {
"title": "My MeshCentral Server winitpro",
"certUrl": "https://msh.winitpro.ru",
"newAccounts": false
}
}
}
Значимые параметры:
-
"port": 1025—MeshCentral слушает только локально на порту 1025 -
"aliasPort": 443– установочный файлы агента будут скачиваться с настройкой подключения на стандартный порт 443 -
"newAccounts": false– запретить открытую регистрацию новых пользователей на главной странице.
Так мы запретили пользователям регистрироваться самостоятельно, создадим первого пользователя-администратора следующей командой (сервер MeshCentral должен быть остановлен):
$ sudo -u meshcentral node node_modules/meshcentral --createaccount myadmin --pass SuperPassword123
Назначить пользователя администратором:
$ sudo -u meshcentral node node_modules/meshcentral --adminaccount myadmin
Еще раз запускаем сервер meshcentral:
$ sudo -u meshcentral node ./node_modules/meshcentral
Откройте браузер и перейдите на URL адрес вашего сервера MeshCentral. Появится форма для ввода имени пользователя и пароля. Попробуйте выполнить вход под созданной вами учетной запись администратора.
Если все работает, настроим автоматический запуск MeshCentraк через systemd:
$ sudo nano /etc/systemd/system/meshcentral.service
Добавляем конфиг:
[Unit] Description=MeshCentral Server After=network.target nginx.service [Service] Type=simple LimitNOFILE=1000000 ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral WorkingDirectory=/opt/meshcentral User=meshcentral Group=meshcentral Restart=always RestartSec=5 StandardOutput=syslog StandardError=syslog SyslogIdentifier=meshcentral [Install] WantedBy=multi-user.target

Обновляем конфигурацию systemd, и запускаем новую службу:
$ sudo systemctl daemon-reload
$ sudo systemctl enable meshcentral
$ sudo systemctl start meshcentral
Установка агентов MeshCentral
Приступим к развертыванию агентов MeshCentral на управляемых устройствах.
Перейдите в веб-панель администрирования MeshCentral и создайте группу компьютеров. Например, OfficePC с типом управления Manage using a software agent.

Чтобы сгенерировать установочный файл агента, нажмите кнопку Add Agent, выберите платформу, на которой хотите установить агент и скачайте установочный файл. Доступны как интерактивный агент (работает только в момент запуска), так и фоновый (работает в виде службы). Доступны агенты для следующих платформ:
- Windows
- Linux/BSD
- Apple macOS
- Mobile device (APK файл для Android)

Например, если вы хотите установить агент на компьютере Windows, скачайте установочный файл Mesh Agent Windowsx86-64.exe и запустите его на компьютере пользователя.

Вы можете установить агент в виде службы Windows (к такому компьютеру можно будет подключиться в фоне) или сразу подключиться к управляющему серверу MeshCentral (подключение к вашем компьютеру будет невозможно после того, как программа закрыта).

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

Также можно открыть консольную CMD сессию с устройством (для запуска произвольных команд или скриптов с правами System), подключиться через Web-RDP, VNC, передать файлы или получить базовую информацию о компьютере.
На вкладке General можно изменить имя компьютера, описание, проверить состояние служб безопасности. В разделе User consent можно указать нужно ли выводить уведомление пользователю о подключении в его сессию, и включить запрос на подтверждение внешнего подключения к сессии.

Если вы установили агент в виде службы на клиентском устройстве, в списке служб появится Mesh Agent. При запуске этой службе клиент подключается к серверу и будет доступен для удаленного управления.

Если агент по какой-то причине не может подключиться к серверу, для вывода ошибок в консоль, остановите службу и запустите его вручную командой с флагом отладки:
cd "C:\Program Files\Mesh Agent"
get-service "mesh agent"|stop-service
.\MeshAgent.exe run

Для установки агента в Linux генерируется строка установки, которую нужно выполнить в консоли:

wget -O meshagent "https://msh.winitpro.ru/meshagents?id=ZZZZZ&installflags=0&meshinstall=6"
Запущенные агенты отправляют периодические heartbeat на сервер и в панели управления видно какие агенты сейчас активны (в сети), а какие нет.

Дополнительно доступны следующие опции при подключении к агенту на Windows устройстве:
- Получение сведений об оборудовании компьютера
- Доступ к командной строке (как с правами пользователя, так и с правами системы)
- Доступ к файлам на устройстве в режиме файлового менеджера через браузер
- Доступ к удаленному реестру
- Отправка сообщения удаленному пользователю c возможностью работы в режиме чата-переписки
- Вывод списка установленных программ на компьютере с возможностью принудительного удаления программы
- Возможность отправить компьютер в спящий режим, выключить или разбудить его
- Можно сгенерировать временную ссылку с ограниченным сроком действия для предоставления доступа к рабочему столу компьютера в гостевой режиме произвольному внешнему гостю (пользователю без аккаунта)
Для безопасного входа пользователей в веб интерфейс MeshCentral можно включить второй фактор — 2FA аутентификацию с помощью TOTP, Time-based One Time Password (совместимо с приложениями Goggle Authenticator и Microsoft Authenticator). 2FA можно включить персонально в настройках пользователя, или глобально для всех пользователей в конфигурационном файле config.json.

Администратор MeshCentral для гибкого управления может создать группы устройств и группы пользователей с разными правами для разных устройств.
Итак, MeshCentral – это простое и гибкое self-hosted решение с открытым исходным кодом, которое поможет вам организовать удаленный доступ к компьютерам пользователей как в локальной сети, так и в Интернет, не используют сторонние облачные сервисы, такие как TeamViewer или AnyDesk. MeshCentral удобен как для организации постоянной удаленной технической поддержки ИТ отделом внутренних пользователей, так и выполнения разовых заявок на оказание техподдержки внешних клиентов и партнеров. Проект активно развивается и поддерживается сообществом.

