Система управляет приложениями на Windows и Linux. Веб-интерфейс показывает подключённые компьютеры и позволяет менять настройки, запускать команды и устанавливать ПО.
Зелёная точка и рамка: агент подключён.
Красная точка и рамка: связь потеряна.
Значок появляется после 3 разрывов за 5 минут. Число разрывов показано в подсказке.
Галочка «Звук связи» управляет общими оповещениями. По умолчанию звук выключен. Динамик на плитке переключает режимы: общий → включён → выключен. Выбор сохраняется в браузере.
| Общий режим. Звук зависит от общей галочки. Значок без рамки. | |
| Включён. Этот терминал подаёт сигнал независимо от общей настройки. | |
| Выключен. Этот терминал остаётся без звука. | |
| Проверить звук. Воспроизводит пробный сигнал. |
Буква рядом с именем показывает режим агента; дополнительные буквы сообщают об обновлении или перезагрузке.
| S | Агент работает как служба. |
| C | Агент запущен в консоли. |
| x | Агент не на связи. |
| Si | Настройки агента отличаются от серверных. |
| Sa | Доступна новая версия агента. |
| Sia | Доступны новые настройки и версия агента. |
| Sr | Агент сообщил о перезагрузке. Флаг исчезнет после следующего heartbeat в рабочем состоянии. |
| TLS 1/1 | HTTPS: подключён 1 источник из 1. |
| HTTP 0/1 | HTTP: источник не подключён. |
| running | Программа запущена. |
| stopped | Программа остановлена. |
| not_found | Программа не найдена. Вместо ID показан прочерк. |
| degraded | Часть компонентов работает с ошибкой или остановлена. Подробности — в подсказке. |
Raven: строка показывает установленный вариант modern или XP/7. Под названием перечислены Agent, Runner и VServer с версиями и сборками. Состояние VServer определяется по процессу.
Поле адреса Raven соответствует server в agent.config.json. Кнопка «Применить» меняет адрес и перезапускает Raven Agent.
| NEW | Служба Windows работает из файла .new. Подсказка показывает его версию и версию .exe. После перезагрузки и замены .exe метка исчезает. |
| 524648 | Одинаковый ID и адрес сервера с портом у разных терминалов на связи. Проверка общая для SST Agent, SSTXCH Bridge и BFS Bridge и действует независимо от фильтров. |
В проверке конфликтов участвуют установленные программы. Несколько источников одного терминала считаются вместе; Raven и NetKit в проверку не входят.
В сетевых плитках график показывает приём синей линией и передачу зелёным пунктиром. Шкала скорости общая, время указано под графиком. Наведите на точку для значения. История хранится на сервере: последние 120 замеров, на графике — до часа. Пропуски данных и паузы более 90 секунд разрывают линии.
В сетевых плитках показаны IPv4/IPv6 и MAC каждого интерфейса устройства. Адреса обновляются при каждом замере; если данные недоступны, показано «—».
Выберите «Мониторинг» и терминал. Отдельные плитки показывают CPU, память, диски, интерфейсы, процессы компонентов и обмен Effector. Представление и выбор терминала запоминаются в браузере.
«Обзор ресурсов» показывает все терминалы одновременно. Нажмите имя для подробностей. Теги видны в карточках и списке терминалов; поле «Теги» фильтрует оба вида. Отсутствующие модули скрыты, остановленные установленные программы остаются видны.
Кнопка >_ находится в заголовке таблицы терминала. В режиме «Плитки» нажмите карточку, чтобы открыть под ней блок управления с этой кнопкой. На Windows 10 1809 и новее перед подключением выберите пользователя; по умолчанию выбрана учётная запись агента (обычно SYSTEM). Если доступного сеанса выбранного пользователя нет, введите его логин и пароль. Для входа по паролю откройте сайт по HTTPS; агент тоже должен подключаться по HTTPS. Пароль остаётся в памяти браузера до выхода оператора: повторное подключение к тому же пользователю не спрашивает его снова. Неверный пароль, выбор другого пользователя и выход из системы забывают его, в хранилище браузера он не попадает. Служебные записи LOCAL SERVICE и NETWORK SERVICE запускаются без пароля. Отключённые записи недоступны для выбора. В заголовке консоли показан фактический пользователь.
В Windows открывается cmd.exe; из него можно запустить PowerShell, если он установлен. На Linux консоль работает от пользователя агента (обычно root); доступны установленные mc, vi и mcedit. Размер окна, функциональные клавиши и Ctrl+C передаются терминалу. На Windows XP/7/8 и ранних Windows 10 legacy-агент открывает консоль от пользователя службы, без выбора другой учётной записи. Кнопка появляется после обновления агента.
«Закрыть» завершает оболочку и её процессы. При потере страницы или агента сеанс завершается примерно через 45 секунд; максимальная длительность — один час. Фильтрация и обновление списка не сбрасывают консоль. Запуск и завершение записываются в журналы сервера и агента.
В режиме «Плитки» поля «Имя / ID» и «Адрес» ищут по имени компьютера, ID терминала и адресу, показанному на карточке. Поиск по части строки, без учёта регистра; запятая перечисляет варианты, ! в начале исключает их. Оба поля работают вместе с тегами. «Сбросить поиск» очищает эти два поля. Рядом показано число найденных терминалов.
| #IBT+# | Кнопка +# задаёт метки. Они сохраняются по ID терминала, а у компьютера без такого ID — по идентификатору агента. |
| Замок резервирует терминал на 1–60 минут. Во время резерва управление доступно его владельцу. |
«Очистить оффлайн» удаляет записи агентов не на связи у терминалов без меток. Терминалы с метками сохраняются.
При резервировании скопируйте PIN: он показывается один раз. Кнопки рядом с резервом продлевают или снимают его. После обновления страницы введите PIN через кнопку с ключом. С исходного IP можно продлить или снять резерв и без PIN; для управления терминалом нужен PIN или новый резерв.
Опрос GET /api/v1/operations?id=... продолжается только для состояний queued и running. Конечные состояния —
completed, failed, timeout, expired, cancelled, rollback, run_as_unavailable, interactive_session_unavailable, denied.
Если timeout содержит ошибку
agent did not acknowledge the operation before timeout_seconds elapsed,
сервер не получил подтверждение до истечения срока операции. Это не доказывает, что команда не выполнялась: перед повтором проверьте результат операции и ожидаемые следы на терминале.
Операция command.exec (инструмент MCP run_command) может выполнить команду в служебной сессии 0, активной консоли или указанной пользовательской WTS-сессии. Выбор задают совместно поля run_as и session.
session |
run_as |
Где выполняется команда |
|---|---|---|
"service" |
"service" |
Сессия 0 от имени службы. Это значение по умолчанию; GUI пользователю не виден. |
"console" |
"current" |
Активная консоль Windows и вошедший в неё пользователь. Используйте для ярлыков и GUI-приложений. |
Число, например 1 |
"current" |
Точная существующая WTS-сессия, в которой должен быть вошедший пользователь. |
Если session не передан, run_as="service" выбирает сессию 0. Для совместимости прежний вызов run_as="current" без session выбирает активную консоль. Несовместимые сочетания отклоняются.
Старая ручка POST /api/exec не поддерживает выбор сессии и таймаут: поля run_as, session и timeout_seconds в ней отклоняются. Для этих параметров используйте только POST /api/v1/operations. После доставки сервер сам завершает операцию состоянием timeout, если ACK не пришёл в указанный срок; запоздалый ACK не меняет этот результат.
Служебная сессия 0:
{
"agent_id": "<agent_id>",
"kind": "exec",
"command": "whoami",
"run_as": "service",
"session": "service",
"timeout_seconds": 30,
"idempotency_key": "diagnostic-service-001",
"reason": "verify service identity"
}
Активная консоль пользователя:
{
"agent_id": "<agent_id>",
"kind": "exec",
"command": "start \"\" \"%USERPROFILE%\\Desktop\\Start AANDC.lnk\"",
"run_as": "current",
"session": "console",
"timeout_seconds": 30,
"idempotency_key": "start-aandc-001",
"reason": "start the approved application in the active console"
}
Конкретная WTS-сессия:
{
"agent_id": "<agent_id>",
"kind": "exec",
"command": "whoami",
"run_as": "current",
"session": 1,
"timeout_seconds": 30,
"idempotency_key": "diagnostic-session-1-001",
"reason": "verify the selected WTS session"
}
Ответ содержит идентификатор сессии, в которой выполнена команда:
{
"status": "completed",
"exit_code": 0,
"run_as": "current",
"session_id": 1,
"stdout": "...",
"stderr": "",
"stdout_encoding": "utf-8",
"stderr_encoding": "utf-8"
}
Вывод читается как UTF-8. При другой кодировке для stdout используется cp866, для stderr — windows-1251. Кодировки можно настроить; результат указан в stdout_encoding и stderr_encoding.
interactive_session_unavailable — сессия отсутствует, в ней нет вошедшего пользователя или агент не смог получить пользовательский токен;failed — команда не запустилась или завершилась с ненулевым кодом;timeout — смотрите поле error: command timed out означает, что агент остановил незавершённое дерево процесса; ошибка про отсутствие подтверждения означает неизвестный итог выполнения и описана в разделе жизненного цикла;cancelled — операция отменена; дерево незавершённого процесса завершается.idempotency_key и конкретную reason, используйте защищённый операторский канал. Полный машинный контракт доступен через GET /api/openapi.json.
Именованная операция collect_registration запускает только registration_command выбранной программы в настроенном registration_working_directory. Команду передать в запросе нельзя. Серийный номер можно опустить: тогда используется точный ID терминала из последнего heartbeat.
{
"agent_id": "<agent_id>",
"kind": "collect_registration",
"program_name": "SST Agent",
"timeout_seconds": 300,
"idempotency_key": "registration-100700-001",
"reason": "renew the approved NetKit certificate"
}
Код 0 завершает операцию как completed с kit=complete; код 3 — как completed с kit=without_req2. Результат содержит ссылку и SHA-256 артефакта REQ_ATM_<serial>.zip. Коды 1 и 2 означают failed.
Выберите Windows-терминалы, откройте панель выполнения команд и переключите CMD / shell на PowerShell. Вставьте скрипт целиком и нажмите «Выполнить». Enter добавляет строку. Требуется Windows-агент версии 1.2.0.109 или новее и установленный Windows PowerShell.
$label = 'Проверка PowerShell'
$values = 1..3
$sum = ($values | Measure-Object -Sum).Sum
Write-Output ($label + ': ' + $sum)
Write-Output 'Кавычки "текст" и символы & | < >'
Сессия service запускает скрипт от имени службы (Session 0); console — от активного пользователя; число — в указанной вошедшей WTS-сессии. Тайм-аут: 1–3600 секунд. В результате показаны PowerShell, исходный скрипт, состояние, stdout, stderr и код выхода; доступна отмена. Отсутствующая сессия или PowerShell возвращают ошибку без перехода на CMD.
Размер скрипта — до 32 КиБ в UTF-8. Текст передаётся в PowerShell через стандартный ввод. Интерактивный ввод не поддерживается.
Windows: выберите внутреннюю или внешнюю сеть, запустите скачанный agent-int.exe или agent-ext.exe двойным щелчком и разрешите повышение прав. Установщик помещает agent.exe в C:\ConfigAgent, применяет выбранный профиль и запускает службу. При повторной установке конфиг заменяется выбранным профилем; прежние файлы сохраняются в C:\ConfigAgent\install-backups. При ошибке выполняется восстановление; результат показан в отдельном окне.
Выберите подходящий бинарник и профиль подключения:
Linux-агент показывает статус контроля подписи программ для Debian, Ubuntu и Astra Linux: включён, только аудит, выключен, механизм недоступен или неизвестно. Статус виден в плитке, детали и время проверки — в системной подсказке. Локальная проверка: agent -security-status. Подпись агента и доверие к ключу — отдельные проверки.
Для 64-битной Windows 10/11.
Для 32-битной Windows 10 или запуска x86 на 64-битной Windows.
Для Windows 7 и XP. Требуется .NET Framework 4.0.
Debian / Astra Linux с systemd. Один пакет с выбором внутреннего (int) или внешнего (ext) подключения при установке.
Для 64-битных систем Linux на Intel/AMD (amd64, x86_64)
Для 32-битных систем Linux на Intel/AMD (386, i386)
Для 64-битных систем Linux на ARM (arm64, aarch64)
agent.exe.
| Пакет | Для чего подходит | Дополнительно |
|---|---|---|
win11-10-x64 |
Windows 10/11, 64-битная ОС | .NET включён в файл агента. |
win11-10-x86 |
Windows 10 или совместимая современная Windows, x86-процесс | .NET включён в файл агента. |
win7-x86 |
Windows 7 или Windows XP, 32-битный legacy-агент | .NET Framework 4.0 |
linux-x64 |
Linux amd64 / x86_64 | Статический бинарник; systemd нужен только для установки как службу |
linux-x86 |
Linux 386 / i386 | Статический 32-битный бинарник |
linux-arm64 |
Linux arm64 / aarch64 | Статический бинарник; systemd нужен только для установки как службу |
В Windows распакуйте ZIP и запустите agent-setup.exe: установщик запросит права администратора, скопирует агент в C:\ConfigAgent и применит адрес сборки. В Linux установите DEB своей архитектуры.
Если на сервере включено agent_activation_required, новый агент виден в списке, но управление доступно только после нажатия Активировать на карточке или в строке терминала. Решение сохраняется после перезапуска сервера. По умолчанию этот режим выключен.
DEB доступны для amd64, i386 и arm64 с systemd. Профиль default использует адрес сервера из сборки. Скачать ZIP и DEB.
sudo apt install ./configagent.deb
printf 'configagent configagent/profile select int\n' | sudo debconf-set-selections
sudo env DEBIAN_FRONTEND=noninteractive apt install -y ./configagent.deb
Без предварительного выбора используется default — адрес из сборки. Для прежних профилей задайте int или ext. При обновлении существующая конфигурация сохраняется.
Обновление .deb сохраняет существующий /opt/ConfigAgent/agent_config.json, включая токен и настройки. Даже старый localhost-конфиг сохраняется: для исправления выполните явную смену профиля. Новый выбор debconf при обновлении профиль не меняет.
sudo /opt/ConfigAgent/agent -configure-profile ext
sudo /opt/ConfigAgent/agent -configure-profile int
Выполните одну команду для нужного профиля. Она сохраняет резервную копию agent_config.json.bak-*, меняет только адреса и настройки транспорта, затем перезапускает ранее работавшую службу. Токен и параметры автообновления сохраняются. Удаление через apt remove сохраняет конфиг; apt purge удаляет его и резервные копии.
В выпуске Astra ZPS подпись встроена в ELF агента. Выбор профиля изменяет только JSON и сохраняет подпись. На терминале должен быть установлен доверенный ключ организации.
Скачайте agent.exe и сохраните его в папку, например:
C:\ConfigAgent\agent.exe
/install использует адрес сервера из сборки.
Существующий конфиг сохраняется. Для замены адреса передайте /server URL; для другого HTTPS-сервера также нужен /certificate-sha256 HEX. Профили /install-int и /install-ext доступны отдельно.
Откройте командную строку от имени администратора. Для терминала во внутренней сети выполните:
cd C:\ConfigAgent
agent.exe /install-int
Команда создаёт внутренний dual-профиль сервера 192.168.13.131 с HTTP 8001, HTTPS 8084 и отпечатком сертификата, затем устанавливает и запускает службу.
Для внешнего терминала, который подключается к d.rdsc.ru только по HTTPS, выполните:
cd C:\ConfigAgent
agent.exe /install-ext
Команда создаёт профиль HTTPS для d.rdsc.ru:8084 и запускает службу.
agent_config.json уже существует:
агент покажет полный путь и спросит о перезаписи. Файл заменяется только после ответа y/yes. Любой другой ответ или отсутствие ввода сохраняет существующий файл и отменяет установку.
В командной строке администратора из папки агента выполните команды ниже. На запрос замены шаблонного конфига ответьте y. Для внешней сети замените /install-int на /install-ext. Существующая служба перенастраивается и запускается; перед ручной заменой нестандартного конфига сохраните нужные настройки.
agent.exe /install-int
Рекомендуемый формат подключения — https_only: агент использует только защищённый адрес и не откатывается на HTTP. Режим dual также поддерживается и одновременно держит HTTP- и HTTPS-heartbeat:
dual{
"ServerUrl": "http://SERVER_IP:8001",
"SecureServerUrl": "https://SERVER_NAME:8084",
"ServerCertificateSha256": "<64-hex-leaf-certificate-fingerprint>",
"ServerCertificateSha256Next": "",
"TransportMode": "dual",
"AgentToken": ""
}
https_only
Для защищённого подключения задайте SecureServerUrl и отпечатки сертификатов; ServerUrl в этом режиме не используется:
{
"SecureServerUrl": "https://SERVER_NAME:8084",
"ServerCertificateSha256": "<64-hex-leaf-certificate-fingerprint>",
"ServerCertificateSha256Next": "",
"TransportMode": "https_only",
"AgentToken": "<agent-token>"
}
SecureServerUrl: https://SERVER_NAME:8084
ServerCertificateSha256: <64-hex-leaf-certificate-fingerprint>
C:\ConfigAgent\agent_config.json от имени администратора.https_only: скопируйте показанные выше SecureServerUrl, ServerCertificateSha256 и, при наличии ротации, ServerCertificateSha256Next. Получите AgentToken у администратора сервера, если на сервере включена токенная авторизация.ConfigAgent из командной строки администратора.TLS 1/1 для терминала — он подтверждает работу защищённого соединения.dual, задайте также ServerUrl и проверьте индикаторы HTTP 1/1 и TLS 1/1.sc stop ConfigAgent
sc start ConfigAgent
| Режим | Поведение |
|---|---|
http_only |
Только ServerUrl; токен по HTTP не отправляется |
dual |
Оба heartbeat работают одновременно; до установки токена HTTP также резервирует control-трафик, после — остаётся только для heartbeat |
https_only |
Рекомендуемый режим. Только SecureServerUrl; автоматического fallback на HTTP нет, явный режим восстановления принимается только по проверенному HTTPS или локально |
SecureServerUrl оператору отдельно настраивать SAN не нужно.
agent_config.json нужно скопировать всю единственную строку результата без пробелов.
python3 -c 'import hashlib,ssl; print(hashlib.sha256(ssl.PEM_cert_to_DER_cert(open("/home/auto/sst-test-deploy/release/server/tls/server.crt").read())).hexdigest())'
Первый self-signed сертификат нельзя надёжно опознать по отпечатку, полученному от него же: TLS шифрует соединение, но без доверенного CA или известного отпечатка не подтверждает личность сервера. Последующие отпечатки передаются через уже проверенный HTTPS-канал.
server_certificate_sha256, а отпечаток нового — в server_certificate_sha256_next.certificate_pin_set_current=true для требуемых агентов в /api/view. Сервер устанавливает этот признак только по HTTPS heartbeat; он подтверждает, что агент сохранил точную текущую пару.server_certificate_sha256 и очистите server_certificate_sha256_next. После следующего обновления конфигурации агенты удалят старый отпечаток.Запустите командную строку от имени администратора и выполните:
cd C:\ConfigAgent
agent.exe /install
Агент будет установлен и запущен автоматически.
| Команда | Описание |
|---|---|
agent.exe /install |
Установить и запустить службу с заранее подготовленным конфигом; без него создаётся шаблон localhost |
agent.exe /install-int |
Создать внутренний dual-профиль, затем установить и запустить службу |
agent.exe /install-ext |
Создать внешний HTTPS-only профиль, затем установить и запустить службу |
agent.exe /uninstall |
Остановить и удалить службу Windows |
agent.exe /console |
Запустить в консольном режиме (для отладки) |
Агенты могут автоматически обновляться до последней версии с сервера.
В файле server_config.json можно настроить параметры автообновления:
{
"agent_settings": {
"auto_update_enabled": true,
"auto_update_check_interval_minutes": 60,
"command_stdout_fallback_encoding": "cp866",
"command_stderr_fallback_encoding": "windows-1251"
}
}
| Параметр | Описание | По умолчанию |
|---|---|---|
auto_update_enabled |
Включить автообновление агентов | true |
auto_update_check_interval_minutes |
Интервал проверки обновлений (минуты) | 60 |
command_stdout_fallback_encoding |
OEM-кодировка stdout после неуспешной строгой проверки UTF-8 | cp866 |
command_stderr_fallback_encoding |
ANSI-кодировка stderr после неуспешной строгой проверки UTF-8 | windows-1251 |
UPDATE.ZIP означает, что политика контроля запуска запретила новый исполняемый файл. Для такого терминала обновите Configuration Agent пакетом update.zip через SST Agent; временный agent.exe.new после отказа удаляетсяКнопка отправляет команду всем агентам на немедленное обновление их настроек с сервера. Используйте после изменения agent_settings в конфигурации сервера.
Выберите компьютеры на главной странице, затем пакет и операцию. Размер ZIP-пакета — до 1 ГиБ (1 073 741 824 байта).
Управление пакетами (загрузка, удаление, скачивание инструментов) доступно на странице «Пакеты».
| Операция | Описание |
|---|---|
| Распространить | Скачать пакет на агент без выполнения |
| Установить | Скачать и выполнить скрипт установки |
| Удалить ПО | Выполнить скрипт удаления |
Пакеты - это ZIP-архивы с паролем 2468, содержащие:
package.zip
├── manifest.json # Манифест пакета
├── install-*.bat # Скрипты установки
├── deinstall-*.bat # Скрипты удаления
└── ...
{
"manifest_version": 1,
"package": {
"name": "Package Name",
"version": "1.0.0"
},
"entrypoints": {
"install": [
{ "when": { "os": "win11", "arch": "x64" }, "cmd": "install-win11-10-x64.bat" },
{ "when": { "os": "win10", "arch": "x64" }, "cmd": "install-win11-10-x64.bat" },
{ "when": { "os": "win11", "arch": "x86" }, "cmd": "install-win11-10-x86.bat" },
{ "when": { "os": "win10", "arch": "x86" }, "cmd": "install-win11-10-x86.bat" },
{ "when": { "os": "win8.1", "arch": "x86" }, "cmd": "install-win7-x86.bat" },
{ "when": { "os": "win8", "arch": "x86" }, "cmd": "install-win7-x86.bat" },
{ "when": { "os": "win7", "arch": "x86" }, "cmd": "install-win7-x86.bat" },
{ "when": { "os": "vista", "arch": "x86" }, "cmd": "install-win7-x86.bat" },
{ "when": { "os": "winxp", "arch": "x86" }, "cmd": "install-winxp-x86.bat" },
{ "when": { "os": "win2000", "arch": "x86" }, "cmd": "install-winxp-x86.bat" },
{ "when": { "os": "linux", "arch": "x64" }, "cmd": "install-linux-x64.sh" },
{ "when": { "os": "linux", "arch": "x86" }, "cmd": "install-linux-x86.sh" },
{ "when": { "os": "linux", "arch": "arm64" }, "cmd": "install-linux-arm64.sh" }
],
"deinstall": [
{ "when": {}, "cmd": "deinstall.bat" }
]
}
}
Платформа публикации агента задаётся точной парой os + arch. Она отличается от типа ATM-платформы, который задаётся условиями atm_platforms_any/all. Пример выше покрывает все семь публикуемых платформ; одинаковый cmd можно использовать в нескольких правилах. Правила проверяются сверху вниз, выполняется первое совпавшее.
| Платформа публикации | Значения when |
|---|---|
win11-10-x64 | win11 + x64 или win10 + x64 |
win11-10-x86 | win11 + x86 или win10 + x86 |
win7-x86 | win8.1, win8, win7 или vista + x86 |
winxp-x86 | winxp или win2000 + x86 |
linux-x64 | linux + x64 |
linux-x86 | linux + x86 |
linux-arm64 | linux + arm64 |
Агент может определить несколько платформ и несколько продуктов одновременно. Поддерживаемые платформы: NCR, Wincor Nixdorf, GRG, Diebold, Diebold Nixdorf, Hyosung, ATECAP, BPT. BPT определяется по классам XFS CIM и PIN при отсутствии CDM и IDC; этот структурный класс имеет приоритет над остаточными ATM-вендорами и Aptra. Hyosung также определяется по XFS vendor Nautilus Hyosung. Продукты Windows: Aptra, ProTopas, ProBase, ProAgent, Harvester, Agilis, JInstall, TellMe, Mobilpay, ASTERM, FINSTREAM, CFT (ЦФТ «Банкомат NG»), AnyWay/FinStream. FINSTREAM определяется по установленной службе finstream; один скопированный каталог журналов не является признаком установки. AnyWay/FinStream требует работающую службу FSSrv с точным путём C:\FinStream\Utils\FSSrv.exe и непустое дерево C:\FinStream. В services присутствуют только установленные службы, а значение показывает, запущена ли служба. Linux дополнительно сообщает BFS по сигнатурам в /opt. Сравнение без учёта регистра.
Отдельное поле device_class имеет значение ATM, Desktop или Unknown. В Windows класс ATM требует признака платформы, XFS-производителя или образа терминала. Установленное ПО (включая Aptra) и его службы сами по себе не делают компьютер банкоматом. Windows Workstation (ProductType=WinNT) без этих признаков терминала определяется как Desktop, сохраняя список ПО и данные BIOS. Без признаков терминала и Workstation класс остаётся Unknown. Таблица и плитки показывают класс отдельно от платформы.
{
"when": {
"device_class": "ATM",
"os": "win10",
"arch": "x64",
"atm_platforms_any": ["ATECAP"],
"atm_software_all": ["Mobilpay"]
},
"cmd": "install-atecap-mobilpay.bat"
}
Все поля одного when объединяются условием И. Суффикс any требует хотя бы одно совпадение, all — все перечисленные. Для Windows 11 добавьте отдельное правило с тем же cmd и os=win11. Пустой when следует помещать последним только если общий скрипт безопасен для остальных терминалов.
| Поле | Описание |
|---|---|
device_class | Точный класс ATM, Desktop или Unknown |
atm_vendor |
Устаревший одиночный производитель: NCR, WN, GRG, Diebold; оставлен для старых манифестов |
os |
Точное значение ОС: win11, win10, win8.1, win8, win7, vista, winxp, win2000 или linux |
arch |
Архитектура публикуемых агентов: x64, x86 или arm64 |
atm_features_any |
Любая из перечисленных фич |
atm_features_all |
Все перечисленные фичи |
atm_platforms_any | Есть хотя бы одна перечисленная ATM-платформа |
atm_platforms_all | Есть все перечисленные ATM-платформы |
atm_software_any | Есть хотя бы один перечисленный продукт |
atm_software_all | Есть все перечисленные продукты |
Скрипты получают следующие переменные:
DEPLOYCFG_OS - Операционная системаDEPLOYCFG_ARCH - АрхитектураDEPLOYCFG_DEVICE_CLASS — класс ATM, Desktop или UnknownDEPLOYCFG_ATM_VENDOR - Производитель ATMDEPLOYCFG_ATM_FEATURES - Фичи ATM (через точку с запятой)DEPLOYCFG_ATM_PLATFORMS — типы ATM-платформ через точку с запятойDEPLOYCFG_ATM_SOFTWARE — обнаруженные продукты через точку с запятойDEPLOYCFG_ATM_MANUFACTURER, DEPLOYCFG_ATM_MODEL — производитель и модель SMBIOSDEPLOYCFG_ATM_IMAGE, DEPLOYCFG_ATM_IMAGE_VERSION — имя и версия образаDEPLOYCFG_ATM_XFS_VENDORS — vendor_name провайдеров XFS через точку с запятойDEPLOYCFG_ATM_SERVICE_STATES — состояния name=running|stopped через точку с запятойDEPLOYCFG_AGENT_ID - ID агентаDEPLOYCFG_PACKAGE_ID - ID пакетаDEPLOYCFG_SERVER_URL - URL сервераИспользуйте скрипты сборки (скачать на странице «Пакеты»):
# Windows:
build-package.bat my-package
# Linux:
./build-package.sh my-package
Или вручную с помощью 7-Zip:
cd my-package
7z a -tzip ../my-package.zip manifest.json
7z a -p2468 -tzip ../my-package.zip -x!manifest.json *
Пакет для установки программы:
my-package/
├── manifest.json
├── install-default.bat
├── deinstall-default.bat
└── setup.exe # ваш инсталлятор
Содержимое install-default.bat:
@echo off
"%~dp0setup.exe" /verysilent /norestart
exit /b %ERRORLEVEL%
Ключи тихой установки для разных инсталляторов:
| Тип инсталлятора | Тихая установка | Подавление GUI / MessageBox |
|---|---|---|
| InnoSetup | /verysilent /norestart |
/suppressmsgboxes
Подавляет все диалоговые окна инсталлятора |
| NSIS | /S |
/S уже подавляет все GUI-окна. Дополнительных параметров нет. |
| MSI (msiexec) | msiexec /i setup.msi /qn /norestart |
/qn
/qn — без интерфейса вообще. /qb! — базовый UI без кнопки отмены. |
| InstallShield | /s /v"/qn" |
/v"/qn REBOOT=ReallySuppress"
Параметры MSI передаются через /v. Добавьте REBOOT=ReallySuppress. |
| WiX Burn | /quiet /norestart |
/passive
/quiet — полностью скрывает UI. /passive — автоматический режим с прогрессом. |
| Setup Factory | /S |
/S скрывает весь GUI. Некоторые версии поддерживают /SILENT. |
| Squirrel | --silent |
По умолчанию работает без GUI. --silent подавляет уведомления. |
| EXE-обёртки (7-Zip SFX, WinRAR SFX) | /s /S
Зависит от обёртки. 7-Zip SFX: -y. WinRAR SFX: /s. |
SFX-архивы могут содержать вложенный инсталлятор — убедитесь, что он тоже запускается тихо. |
Сервер может одновременно слушать HTTP и HTTPS. Каждый порт включается независимо; встроенный HTTPS принимает только TLS 1.2 и новее.
{
"listeners": {
"http": { "enabled": true, "listen": "0.0.0.0:8001" },
"https": {
"enabled": true,
"listen": "0.0.0.0:8084",
"tls_cert_file": "/etc/sst-test-deploy/tls/server.crt",
"tls_key_file": "/etc/sst-test-deploy/tls/server.key"
}
},
"security": {
"mode": "disabled"
},
"agent_settings": {
"transport_mode": "https_only",
"secure_server_url": "https://SERVER_NAME:8084",
"server_certificate_sha256": "<64-hex-leaf-certificate-fingerprint>",
"server_certificate_sha256_next": ""
}
}
В режиме required API доступен по HTTPS с токеном оператора или агента. HTTP обслуживает маршруты агента из allowed_networks при работающем HTTPS-порте. Без настроек auth_* в режиме disabled токен не требуется: список компьютеров доступен для чтения, а установка, загрузка пакетов и запуск команд ограничены allowed_networks. Пустой белый список разрешает управление с любого IP.
Открывайте веб-интерфейс required-сервера только по HTTPS и вводите токен оператора на экране входа. После входа в верхней панели доступна кнопка «Выйти». Токен хранится лишь в памяти страницы, не отправляется на другой origin и удаляется при выходе, перезагрузке или отказе авторизации; защищённые данные и окна результатов при этом очищаются. На HTTP вход недоступен.
Для новых подключений используйте transport_mode=https_only. Задайте точный отпечаток сертификата и отдельные agent_token/operator_token, если сервер работает в режиме required. Пустой AgentToken допустим только на сервере без токенной авторизации.
HTTP-bootstrap может изменить только схему и порт; имя/IP должны совпадать с ServerUrl. После установки AgentToken HTTP остаётся для heartbeat, но команды, конфигурация программ и исполняемые пакеты принимаются только по HTTPS.
dual только когда действительно нужны оба независимых heartbeat. Для обычного подключения рекомендуется https_only.
Рекомендуемая конфигурация агента — https_only с проверенным отпечатком сертификата. HTTP-listener можно отключить независимо, если он не нужен ни одному настроенному dual- или http_only-подключению.
Самоподписанный сертификат создавайте скриптом scripts/generate-self-signed-tls.sh с SAN для каждого используемого имени/IP.
Параметры задаются в корне server_config.json. Любой заполненный auth_* включает защиту операторского API независимо от security.mode.
{
"auth_htaccess_compat": "/etc/effector/operators.htpasswd",
"auth_pass_policy_checker": "https://policy.example/pass_validate/authenticate",
"auth_no_pass": "192.168.13.0/24, 127.0.0.1, ::1"
}
Если включены оба источника, логин из файла проверяется только в нём; остальные логины — через API. Исключение по сети снимает запрос пароля, но установка и команды по-прежнему ограничены allowed_networks.
Вход по паролю доступен через HTTPS. Сессия привязана к IP и действует три дня, максимум до истечения пароля. Вход сохраняется при обновлении страницы, переходах между разделами и перезапуске сервера через защищённую HttpOnly-cookie. Кнопка «Выйти» завершает сессию и удаляет cookie; пароль и токен сессии на сервере не сохраняются. В журнал пишутся логин, IP и результат, без пароля и токена. Конфигурация установленных агентов не меняется.
При API_KEY_MODE=true в меню появляется раздел «API-ключи». Укажите название, срок (по умолчанию 90 дней) и область доступа: один терминал, несколько или все. Таблица показывает оставшиеся дни; ключ можно показать, скопировать и удалить. «Удалить неактивные» удаляет ключи с истёкшим сроком.
{
"API_KEY_MODE": false,
"api_key_file": "access/api_keys.json",
"api_key_no_auth": "62.76.67.251/32,128.0.130.107/32,109.74.142.72/29"
}
api_key_no_auth — адреса, сети или путь к файлу исключений: с этих адресов AI-клиентам ключ не требуется. Белый список allowed_networks по-прежнему ограничивает команды и установку. ConfigAgent работает по прежним правилам. Ключи хранятся на сервере в файле с правами 0600.
AI-агентам разрешено и требуется сохранять выданный ключ в свой закрытый файл на диске вне репозитория. Передача — по HTTPS заголовком X-API-Key. В MCP путь к файлу задаётся через SST_DEPLOY_TOKEN_FILE.
В файле server_config.json укажите разрешённые сети в формате CIDR:
{
"allowed_networks": [
"192.168.0.0/24",
"10.0.0.100/32"
],
"trusted_proxy_networks": [
"192.0.2.10/32"
]
}
trusted_proxy_networks указывайте только для известного непосредственного reverse proxy. Он обязан передавать один проверяемый IP в X-Forwarded-For.
| Формат | Описание |
|---|---|
192.168.0.0/24 |
Вся подсеть 192.168.0.x (256 адресов) |
10.0.0.100/32 |
Один IP-адрес |
10.0.0.100 |
Один IP-адрес (маска /32 добавляется автоматически) |
Следующие действия доступны только с разрешённых IP-адресов:
agent_config.json содержит правильный URL сервераagent.exe /console чтобы увидеть сообщения об ошибкахagent.log в папке агентаC:\ConfigAgent\
├── agent.exe # Исполняемый файл
├── agent_config.json # Настройки подключения к серверу
├── agent_id.txt # Уникальный ID агента (создается автоматически)
└── agent.log # Файл журнала