Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 2
5. Проверка гостевого Debian
Это ключевой раздел. Если токен не виден в Debian средствами PC/SC, FreeRDP не сможет его нормально пробросить.
5.1. Установите нужные пакеты
Внутри каждой ВМ должны быть установлены как минимум:
sudo apt-get update
sudo apt-get install pcscd pcsc-tools libccid opensc
Драйвер Рутокен:
ifd-rutokens
обычно ставится из пакета, предоставленного Актив, либо из их репозитория/архива. В стандартных репозиториях Debian его может не быть или версия может быть устаревшей.
Проверьте установленные версии:
dpkg -l | grep -E 'pcscd|pcsc-tools|libccid|ifd-rutokens|freerdp'
Также проверьте:
xfreerdp /version
или:
xfreerdp --version
5.2. Проверьте, видит ли ядро сам токен
В ВМ выполните:
lsusb
Рутокен должен быть в списке как устройство.
Если устройства нет, проблема до уровня ОС:
- USB не проброшен в ВМ;
- неправильный фильтр VirtualBox;
- неисправен порт/кабель/хаб;
- токен не питается;
- устройство отключается по питанию;
- токен завис.
Если устройства нет в lsusb, дальнейшая настройка pcscd и FreeRDP не имеет смысла.
5.3. Проверьте PC/SC
Установите/запустите pcscd.
Проверьте статус:
systemctl status pcscd.service
systemctl status pcscd.socket
Если используется pcscd.socket, иногда возникает ситуация, когда служба активируется поздно или не успевает подхватить устройство.
Для более предсказуемой диагностики можно временно перевести pcscd в обычный режим без активации через сокет:
sudo systemctl disable --now pcscd.socket
sudo systemctl enable --now pcscd.service
sudo systemctl restart pcscd.service
Если юнита pcscd.socket нет — это нормально, просто используйте:
sudo systemctl enable --now pcscd.service
sudo systemctl restart pcscd.service
Далее проверьте читателей:
opensc-tool -l
или:
pcsc_scan
Ожидаемый результат:
есть один читатель;
карта вставлена;
есть ATR;
нет ошибок.
Если opensc-tool -l не видит читателя, а lsusb видит устройство, проблема в pcscd или драйвере.
5.4. Проверьте, что драйвер Рутокен подхватывается
Проверьте каталог драйверов PC/SC:
ls -l /usr/lib/pcsc/drivers/
Там могут быть, например:
ifd-ccid.bundle
ifd-rutokens.bundle
Проверьте зависимости библиотек драйвера:
find /usr/lib/pcsc/drivers -type f -name '*.so*' -exec ldd {} \; | grep -B1 'not found'
Если есть строки not found, значит драйверу не хватает библиотек.
5.5. Проверьте конфликт между libccid и ifd-rutokens
Это очень важный пункт.
Рутокен может работать:
- через общий драйвер
libccid; - через специализированный драйвер
ifd-rutokens; - иногда система пытается использовать оба варианта, и возникают дубли, конфликты или нестабильность.
Проверьте, сколько читателей показывает система:
opensc-tool -l
Если один физический Рутокен дает два или больше читателя, это плохо для проброса через FreeRDP. Особенно это важно, если вы где-то проверяете сразу много токенов на одном хосте. Для диагностики можно временно отключить один из драйверов.
Например, отключить общий CCID-драйвер:
sudo mkdir -p /root/pcsc-drivers-disabled
sudo mv /usr/lib/pcsc/drivers/ifd-ccid.bundle /root/pcsc-drivers-disabled/
sudo systemctl restart pcscd.service
Затем проверить:
opensc-tool -l
pcsc_scan
Если Рутокен виден нормально — можно оставить только ifd-rutokens.
Если после этого токены перестали видиться, верните драйвер:
sudo mv /root/pcsc-drivers-disabled/ifd-ccid.bundle /usr/lib/pcsc/drivers/
sudo systemctl restart pcscd.service
Затем можно попробовать наоборот: временно отключить ifd-rutokens и оставить libccid, если ваша модель токена нормально с ним работает. Но для Рутокенов обычно лучше использовать актуальный специализированный драйвер от Актив, если он поддерживает конкретную модель.
5.6. Убедитесь, что токен виден именно как смарт-карта, а не только как флешка
Для Рутокен ЭЦП Flash и некоторых других модификаций устройство может иметь несколько функций. Важно, чтобы в гостевом Debian была активна именно смарт-карта/криптографическая часть.
Проверьте:
lsusb
opensc-tool -l
Если opensc-tool -l не видит читателя, но токен виден как накопитель, возможно, устройство переключено не в тот режим, либо драйвер не работает со смарт-картой.
Также отключите автоматическое монтирование флеш-части токена в графической среде, если оно есть. Автомонтирование само по себе обычно не ломает смарт-карту, но может создавать лишние обращения к устройству.
5.7. Проверьте права доступа пользователя
Пользователь, из-под которого запускается FreeRDP, должен иметь доступ к USB-устройствам и сокету pcscd. Обычно в Debian это работает из коробки при использовании pcscd, но проверить стоит.
Проверьте группы пользователя:
groups
Иногда полезно добавить пользователя в группу plugdev:
sudo usermod -aG plugdev $USER
После этого нужно выйти из сеанса и зайти заново.
Также проверьте сокет pcscd:
ls -l /var/run/pcscd/
Не должно быть ошибок доступа для пользователя.
5.8. Проверьте, не занят ли токен другим процессом
Если какое-то приложение в Debian уже открыло смарт-карту в монопольном режиме, могут быть проблемы.
Временно закройте:
pcsc_scan, если он запущен постоянно;- графические утилиты Рутокен;
- браузеры;
- криптографические агенты;
scdaemon, если он есть;- любые приложения, работающие с токеном.
Для диагностики можно перезапустить pcscd:
sudo systemctl restart pcscd.service
Затем снова проверить:
opensc-tool -l
5.9. Важный момент: порядок подключения
Очень частая ошибка:
- ВМ загружена.
pcscdуже работает.- Токен подключили в ВМ уже после запуска
xfreerdp. - FreeRDP не видит читателя или видит его поздно.
Правильный порядок для диагностики:
1. Подключить токен к ПК/ВМ.
2. Дождаться появления в lsusb.
3. Перезапустить pcscd.
4. Убедиться, что токен виден в opensc-tool / pcsc_scan.
5. Только после этого запускать xfreerdp.
Команды:
sudo systemctl restart pcscd.service
sleep 2
opensc-tool -l
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.