При переходе с сетевого варианта работы на терминальный пользователи часто сталкиваются с тем, что платформа 1С перестает «видеть» аппаратный ключ защиты. Ситуация осложняется, когда сервер работает под управлением операционной системы Linux, так как механизмы проброса и поиска лицензий в этой среде имеют свои особенности. Разберем подробно, почему возникает эта проблема и как правильно настроить систему, чтобы терминальные сессии успешно получали лицензии.
Первым делом проанализируем, какой именно ключ используется в вашей организации. Это критически важный момент, так как не все аппаратные ключи поддерживают работу в терминальном режиме. Рассмотрим основные категории:
H4M1 или HL Pro). Эти ключи предназначены для работы на конкретном компьютере, в который они вставлены. Согласно политике лицензирования 1С, локальные ключи не работают в терминальных сессиях. Если 1С запущена через RDP или иной протокол удаленного рабочего стола на Linux, платформа блокирует поиск локального ключа, считая такое использование нарушением лицензионного соглашения.ORGL8). Именно такие ключи (на 5, 10, 20 и более пользователей) корректно работают в терминальном режиме, но требуют наличия запущенного менеджера лицензий.Если у вас в наличии только однопользовательский ключ, единственным верным решением будет его замена на программную лицензию или приобретение сетевого аппаратного ключа.
В отличие от Windows, где установка драйвера HASP происходит практически в автоматическом режиме, в Linux нам необходимо выполнить ряд ручных манипуляций. Выясним, какие компоненты должны быть активны на сервере.
Для работы с ключом в Linux используется пакет haspd (или aksusbd). Нам необходимо убедиться, что соответствующий демон запущен и работает. Проверим статус службы с помощью стандартных команд системного администрирования. Посмотрим на пример команды для систем на базе systemd:
systemctl status haspd
# или, если используется старая система инициализации:
service haspd status
Если демон не запущен, 1С не сможет взаимодействовать с USB-портом, в который вставлен ключ, даже если сама операционная система видит устройство. Проанализируем видимость устройства в системе с помощью команды:
lsusb
В выводе мы должны найти устройство с идентификатором производителя 0529:0001 (Aladdin Knowledge Systems). Если устройство есть, а 1С его не видит — проблема в программной прослойке.
Одной из скрытых причин проблем в Linux являются права доступа. По умолчанию обычный пользователь, под которым запускается терминальная сессия 1С, может не иметь прав на чтение данных из USB-устройства. Разберем, как это исправить через правила udev.
Нам необходимо создать или отредактировать файл правил, обычно это /etc/udev/rules.d/80-hasp.rules. Внутри должны быть прописаны параметры, разрешающие группе пользователей (или всем) доступ к ключу. Пример содержимого файла:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0001", MODE="0666"
После внесения изменений обязательно перезагрузим правила udev:
udevadm control --reload-rules
udevadm trigger
Существует распространенное заблуждение, что если ключ вставлен прямо в сервер, на котором работают пользователи, то менеджер лицензий не нужен. Однако для терминального режима это не так. Когда пользователь подключается к Linux-серверу по протоколу RDP или через X11 Forwarding, платформа 1С воспринимает эту сессию как удаленную.
В этом случае платформа ищет лицензию не в локальных портах, а через сетевой протокол (по умолчанию порт 475). Поэтому на Linux-сервере обязательно должен быть запущен HASP License Manager. Он будет «слушать» сетевой трафик и отдавать лицензии терминальным сессиям, даже если они физически находятся на этой же машине.
Чтобы ускорить поиск ключа и исключить ошибки, нам необходимо правильно настроить файл nethasp.ini. В Linux он обычно располагается в каталоге с установленной платформой (например, /opt/1C/v8.3/x86_64/conf/).
Рассмотрим оптимальные настройки для этого файла. Мы рекомендуем отключить широковещательный поиск (broadcast), который часто блокируется файрволами или особенностями виртуальных сетей, и указать адрес сервера лицензий явно.
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
# Указываем IP-адрес сервера, где установлен ключ (можно 127.0.0.1)
NH_SERVER_ADDR = 127.0.0.1
# Отключаем широковещательный поиск для стабильности
NH_USE_BROADCAST = Disabled
# Указываем протокол связи
NH_TCPIP_METHOD = TCP
Такая настройка заставляет 1С обращаться напрямую к менеджеру лицензий, что значительно повышает стабильность запуска в терминальных сессиях.
Проанализируем ситуацию, упомянутую в обсуждении: наличие нескольких ключей. Важно помнить железное правило: нельзя вставлять в один компьютер два ключа одной серии (например, два ключа ORGL8). Если вы вставите в сервер ключ на 5 пользователей и ключ на 10 пользователей одной серии, система инициализирует только один из них (обычно тот, что физически стоит в первом порту). Общее количество лицензий при этом не суммируется.
Если вам нужно увеличить количество лицензий, используйте ключи разных серий либо замените текущий ключ на один более мощный (например, на 20 пользователей). Также хорошим решением будет разнос ключей по разным физическим серверам в сети.
Если ваш Linux-сервер является виртуальной машиной (Proxmox, VMware, KVM), выясним причину возможных сбоев в механизме «проброса» (USB Passthrough). Аппаратные ключи HASP очень чувствительны к задержкам шины USB. Если проброс реализован нестабильно, ключ может периодически пропадать из системы, что приведет к вылету пользователей из 1С.
В таких случаях мы рекомендуем:
Подведем итог и составим краткий план решения проблемы:
NH_SERVER_ADDR = 127.0.0.1 и отключите NH_USE_BROADCAST.Следуя этим рекомендациям, вы обеспечите стабильную работу «1С:Бухгалтерии 3.0» в терминальном режиме на базе ОС Linux, минимизируя риски возникновения ошибок поиска лицензии.