Гайд: LIBUSB_ERROR_NO_DEVICE и pcscd с Рутокен в Astra Linux через VirtualHere - Часть 2
7. Права доступа к сокету pcscd
КриптоПро и другие приложения должны иметь доступ к PC/SC-сокету.
Проверьте:
ls -l /run/pcscd/
Обычно там должны быть файлы вроде pcscd.comm или pcscd.sock.
Проверьте группу:
getent group pcscd
Если КриптоПро запускается от обычного пользователя, можно попробовать временно выполнить команду КриптоПро через sudo. Если через sudo токен виден, а от пользователя нет — проблема в правах.
Если приложение или сервис использует КриптоПро от отдельного пользователя, добавьте этого пользователя в группу pcscd, если она существует:
sudo usermod -aG pcscd $USER
После этого нужно перелогиниться или перезапустить пользовательскую сессию. Для системных сервисов, например веб-сервера, нужно убедиться, что сервис имеет доступ к /run/pcscd.
В systemd может потребоваться:
SupplementaryGroups=pcscd
или проброс каталога /run/pcscd, если сервис работает в контейнере.
8. Отключите энергосбережение и автосон
Одна из частых причин LIBUSB_ERROR_NO_DEVICE — система пытается перевести USB-устройство в режим энергосбережения.
8.1. Временное отключение
Для теста:
for f in /sys/bus/usb/devices/*/power/autosuspend; do
echo -1 | sudo tee "$f" >/dev/null 2>&1 || true
done
Или, если доступно управление через control:
for f in /sys/bus/usb/devices/*/power/control; do
echo on | sudo tee "$f" >/dev/null 2>&1 || true
done
8.2. Постоянное отключение через параметр ядра
Если это не VDS с недоступным загрузчиком, можно добавить параметр:
usbcore.autosuspend=-1
в параметры загрузки ядра.
Отредактируйте:
sudo nano /etc/default/grub
Найдите строку вида:
GRUB_CMDLINE_LINUX_DEFAULT="..."
Добавьте внутрь:
usbcore.autosuspend=-1
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
Затем:
sudo update-grub
или:
sudo grub-mkconfig -o /boot/grub/grub.cfg
И перезагрузите машину.
8.3. Правило для конкретного устройства
Сначала узнайте ID токена:
lsusb | grep -Ei 'aktiv|rutoken'
Пример вывода:
Bus 002 Device 005: ID xxxx:yyyy Aktiv Co. Rutoken lite
Здесь xxxx — idVendor, yyyy — idProduct.
Создайте правило:
sudo nano /etc/udev/rules.d/99-rutoken-no-autosuspend.rules
Содержимое:
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="yyyy", ATTR{power/autosuspend}="-1"
Замените xxxx и yyyy на ваши значения.
Перечитайте правила:
sudo udevadm control --reload-rules
9. Особенности проброса через VirtualHere
Для смарт-карт и токенов проброс по сети гораздо более чувствителен к задержкам, чем обычная флешка. Флешки КриптоПро может видеть нормально, а токен — нет, потому что массовые накопители терпят задержки, а протокол смарт-карты может не успевать за таймаутами.
9.1. Серверная часть на Windows 10
Рекомендуется:
- Вставить Рутокен напрямую в материнскую плату, желательно в порт сзади.
- Не использовать:
- переднюю панель корпуса;
- длинные кабели;
- дешевые удлинители;
- непрямые хабы;
- KVM;
- USB-over-Ethernet удлинители;
- мониторы с USB-хабом.
- Попробовать порт:
- сначала обычный порт сзади;
- затем попробовать порт с другой стороны;
- если есть порт, который работает медленнее, иногда помогает именно он;
- если подключено через порт, лучше использовать прямое подключение.
- Временно проверить токен в порту, который не используется для зарядки и не имеет специальных режимов.
- Если есть возможность — использовать порт, который работает стабильнее.
9.2. Энергосбережение в Windows
На сервере, где подключен токен, отключите энергосбережение.
В схеме электропитания:
- Панель управления → Электропитание → Настройка схемы электропитания → Дополнительные параметры питания.
- Параметры временного отключения портов.
- Установите «Запрещено» или «Отключено».
В Диспетчере устройств:
- Контроллеры.
- Для корневых концентраторов откройте свойства.
- Управление электропитанием.
- Снимите галочку «Разрешить отключение этого устройства для экономии энергии».
Если есть пункты вроде:
- «Корневой концентратор»;
- «Концентратор»;
- «Устройство»;
- «Смарт-карта»;
- «Устройство чтения смарт-карт»;
— проверьте, нет ли там отдельных настроек энергосбережения.
9.3. Локальные приложения на сервере
Перед пробросом убедитесь, что токен не занят на серверной машине.
На сервере временно закройте:
- панель управления Рутокен;
- КриптоПро;
- браузеры с плагином Рутокен;
- приложения подписи;
- любые утилиты Aktiv;
- диспетчеры сертификатов.
Иногда также помогает временная остановка локальной службы смарт-карт на сервере, пока токен пробрасывается клиенту.
9.4. Настройки клиента
Если клиент стоит на Astra Linux, проверьте:
pgrep -a vhclient
pgrep -a virtualhere
Посмотрите журналы, если клиент установлен как служба:
systemctl list-units --all | grep -Ei 'virtualhere|vhclient'
journalctl -u 'virtualhere*' -u 'vhclient*' --since "-1 hour"
Если служба не настроена, запустите клиент вручную и смотрите его вывод.
В интерфейсе клиента:
- Убедитесь, что токен находится в состоянии использования/захвата клиентом.
- Попробуйте:
- отключить устройство;
- снова подключить;
- переподключить клиент;
- перезапустить клиент.
- Если есть пункт автоматического переподключения — включите его.
- Если есть выбор транспортного режима — попробуйте разные варианты, если они доступны.
- Если есть шифрование — временно отключите для теста в доверенной сети.
- Если есть сжатие — временно отключите для теста.
- Если клиент использует режим с ядром и пользовательский режим — попробуйте оба, если доступны.
- Если есть настройки таймаутов — попробуйте немного увеличить их.
9.5. Сеть между сервером и клиентом
Для смарт-карт очень важны:
- низкая задержка;
- отсутствие потери пакетов;
- стабильный канал;
- отсутствие агрессивного фаервола, который рвёт длительные сессии.
Проверьте:
ping -c 100 адрес_сервера
mtr адрес_сервера
Если есть потери, джиттер, задержки выше единиц миллисекунд внутри локальной сети — это уже подозрительно.
Если проброс идет через:
- Wi-Fi;
- IPsec;
- интернет;
- powerline-адаптеры;
- мосты;
- слабые каналы;
- удаленный офис;
— для смарт-карт это часто приводит к таким ошибкам. Особенно плохо работают пробросы смарт-карт через интернет. Даже если канал кажется хорошим, для смарт-карты важны не мегабиты, а стабильность и малая задержка.
9.6. Если клиент и сервер в одной сети
Идеальный вариант для теста:
- сервер и клиент в одной проводной сети;
- коммутатор рядом;
- отсутствие фаервола;
- статические адреса;
- прямой маршрут;
- стандартная величина пакета.
Если используете виртуальную машину, лучше, чтобы клиент стоял прямо внутри гостевой ОС.
Не стоит делать двойную цепочку:
токен → сервер → хост с клиентом → проброс в виртуалку
Чем больше звеньев, тем выше вероятность ошибок.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.