Подробный гайд: Проброс 11 Рутокенов с Debian на Windows Server через FreeRDP - Часть 5
11. Практический скрипт диагностики внутри каждой ВМ
Можно использовать такой скрипт для сбора состояния:
#!/bin/bash
LOG=/tmp/rutoken-diag-$(hostname)-$(date +%Y%m%d-%H%M%S).log
exec > >(tee "$LOG") 2>&1
echo "=== Date ==="
date
echo
echo "=== Hostname ==="
hostname
echo
echo "=== OS ==="
cat /etc/os-release
echo
echo "=== Kernel ==="
uname -a
echo
echo "=== USB devices ==="
lsusb
echo
echo "=== PC/SC packages ==="
dpkg -l | grep -E 'pcscd|pcsc-tools|libccid|ifd-rutokens|freerdp' || true
echo
echo "=== PC/SC service ==="
systemctl status pcscd.service --no-pager || true
systemctl status pcscd.socket --no-pager || true
echo
echo "=== PC/SC drivers ==="
ls -l /usr/lib/pcsc/drivers/ || true
echo
echo "=== Missing libs in PC/SC drivers ==="
find /usr/lib/pcsc/drivers -type f -name '*.so*' -print -exec ldd {} \; 2>/dev/null | grep -B1 'not found' || true
echo
echo "=== Readers via opensc-tool ==="
opensc-tool -l || true
echo
echo "=== pcsc_scan short output ==="
timeout 5 pcsc_scan || true
echo
echo "=== FreeRDP version ==="
xfreerdp /version 2>/dev/null || xfreerdp --version 2>/dev/null || true
echo
echo "=== FreeRDP smartcard help ==="
xfreerdp --help 2>/dev/null | grep -i smartcard || true
echo
echo "=== Log saved to $LOG ==="
Запуск:
chmod +x diag.sh
./diag.sh
Полученный файл можно прикладывать к обращению в поддержку.
12. Рекомендуемая рабочая команда подключения
Для обычной рабочей сессии после успешной диагностики рекомендую такой вид:
xfreerdp \
/v:SERVER_ADDRESS \
/u:USERNAME \
/d:DOMAIN \
/smartcard \
/network:lan \
/dynamic-resolution \
/clipboard \
/log-level:INFO
Если нужна глубокая диагностика:
WLOG_LEVEL=TRACE xfreerdp \
/v:SERVER_ADDRESS \
/u:USERNAME \
/d:DOMAIN \
/smartcard \
/network:lan \
2>&1 | tee ~/freerdp-trace.log
Если в ВМ несколько читателей, попробуйте явное указание:
xfreerdp \
/v:SERVER_ADDRESS \
/u:USERNAME \
/d:DOMAIN \
/smartcard:"Aktiv Co. Rutoken Lite 00 00" \
/log-level:TRACE
13. Типовые ошибки, которые встречаются в таких сценариях
Ошибка 1: Панель Рутокен запущена до подключения
Симптом:
служба смарткарт не запущена
при том, что служба на сервере работает.
Решение:
- подключиться по RDP;
- только после этого запустить панель;
- если панель уже была открыта — перезапустить ее;
- проверить
certutil -scinfo.
Ошибка 2: Токен не дошел до ВМ
Симптом:
lsusb не видит токен
Решение:
- проверить фильтр VirtualBox;
- проверить
VBoxManage list usbhost; - переустановить токен в фильтр;
- перезапустить ВМ;
- проверить другой порт.
Ошибка 3: Токен виден в lsusb, но не виден в pcsc_scan
Симптом:
устройство есть, читателя нет
Решение:
- перезапустить
pcscd; - проверить
ifd-rutokens; - проверить конфликт
libccidиifd-rutokens; - обновить драйвер Рутокен;
- проверить недостающие библиотеки.
Ошибка 4: В ВМ два читателя на один токен
Симптом:
opensc-tool -l показывает больше читателей, чем физических токенов
Решение:
- отключить лишний драйвер;
- явно указывать нужный читатель в FreeRDP;
- проверить, не создает ли токен несколько интерфейсов;
- использовать только один активный интерфейс.
Ошибка 5: Все 11 подключаются одновременно и часть падает
Симптом:
при одновременном подключении 11 сессий часть токенов не появляется
Решение:
- подключать поэтапно;
- увеличить паузы между подключениями;
- перезапускать
pcscdперед подключением; - проверить серверные журналы;
- обновить клиент и серверные патчи.
Ошибка 6: Старые отключенные сеансы
Симптом:
пользователь переподключается, но токен не работает
Решение:
- использовать полный logoff;
- удалить старые сеансы;
- перезагрузить сервер перед тестом.
14. Рекомендуемый порядок действий именно для вашего случая
Этап 1. Исключить панель Рутокен
- Перезагрузить сервер.
- Убедиться, что служба смарт-карт работает.
- Подключить пользователей через FreeRDP.
- Не запускать панель Рутокен до подключения.
- После входа проверить:
certutil -scinfo
Если все 11 видны через certutil, а панель у некоторых не показывает токен, проблема в панели/кэше/драйвере панели.
Этап 2. Проверить каждую ВМ локально
На каждой ВМ выполнить:
lsusb
systemctl status pcscd.service
opensc-tool -l
Цель:
в каждой ВМ ровно один Рутокен виден как смарт-карта
Если где-то этого нет, до сервера проблема еще не дошла.
Этап 3. Проверить VirtualBox
На проблемных ПК:
- переподключить токен;
- проверить фильтр;
- переключить контроллер между USB 2.0 и USB 1.1;
- закрыть все Рутокен-приложения на хосте;
- проверить
VBoxManage list usbhost.
Этап 4. Обновить клиентское ПО
Если есть возможность, обновить ВМ:
Debian 9 -> Debian 11/12
старый FreeRDP -> актуальный 2.10+ / 3.x
старый ifd-rutokens -> актуальный драйвер Актив
Это один из самых вероятных способов избавиться от проблемы.
Этап 5. Сделать поэтапный тест
- Подключить 5 пользователей.
- Проверить.
- Подключить еще 3.
- Проверить.
- Подключить еще 3.
- Проверить.
Если при таком порядке все 11 работают, значит проблема в одновременном подключении/таймаутах.
Этап 6. Если ровно 10 и не больше
Если после всех этапов:
всегда 10 работают, 11-й нет
И это не зависит от токена/пользователя/ВМ, тогда нужно:
- Проверить воспроизведение на актуальной версии FreeRDP.
- Проверить воспроизведение на одной современной Linux-машине с 11 токенами.
- Собрать логи.
- Обратиться к вендору с подозрением на ограничение/баг серверной части или клиентского смарт-карточного канала.
- Как временное решение — распределять пользователей по нескольким терминальным серверам.
15. Чек-лист
Проверьте по пунктам:
1. Сервер перезагружен.
2. Старые RDP-сеансы завершены, не просто отключены.
3. Служба смарт-карт на сервере запущена.
4. Панель Рутокен запускается только после подключения.
5. Вместо панели используется certutil -scinfo.
6. В каждой ВМ токен виден в lsusb.
7. В каждой ВМ токен виден в opensc-tool -l.
8. В каждой ВМ ровно один нужный читатель.
9. Нет конфликта между libccid и ifd-rutokens.
10. pcscd запущен до xfreerdp.
11. FreeRDP запущен с /smartcard и логом.
12. Версия FreeRDP актуальна.
13. Драйвер Рутокен актуален.
14. В логах нет ошибок доступа к устройству.
15. На сервере в диспетчере устройств появляется считыватель.
16. Подключение выполняется поэтапно, а не все 11 мгновенно.
16. Мой главный практический совет
Debian 9 + FreeRDP 2 из stretch-backports + pcscd 1.8.20 + ifd-rutokens 1.0.4
Она уже слишком старая для таких тонких сценариев.
Лучше сделать эталонную ВМ:
Debian 11/12 или Ubuntu LTS
актуальный FreeRDP
актуальный pcscd
актуальный драйвер Рутокен
Затем:
- Проверить на одной эталонной ВМ один токен.
- Размножить образ.
- Проверить 11 подключений поэтапно.
- Если проблема сохранится — собирать логи и открывать кейс у Актив/FreeRDP, потому что тогда это уже похоже на баг взаимодействия или серверное ограничение.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.