В этой статье я покажу процесс установки и настройки сервера usb usbredirector на сервере Debian 12.
Что такое usbredirector
Usbredirector — это клиент-серверное ПО позволяющее передавать usb-устройства по сети. Чаще всего этим пользуются для передачи каких-нибудь usb ключей защиты. При этом передавать usb-устройства можно даже через интернет, например ваш локальный ключ защиты можно пробросить в виртуалку, в каком нибудь датацентре.
Разработчиком Usbredirector является компания IncentivesPro. Эта компания основана в 2007 году и базируется в США.
В настоящее время сайт компании https://www.incentivespro.com/ заблокирован для доступа из России. Так что для скачивания придётся использовать некоторые дополнительные средства.
Сервер и клиент usbredirector для Windows являются платными, но для linux это приложение распространяется бесплатно.
Я уже писал про этот сервер в статье — Сервер hasplm для клиентских ключей 1С, но текущая статья более свежая. И в этой статье больше примеров использования этого сервера.
Установка
Во-первых необходимо установить все зависимости для этого приложения:
# apt install -y linux-headers-`uname -r` # apt install -y linux-source # apt install -y dkms
Теперь скачиваем последнюю версию usbredirector для linux. И распаковываем скачанный архив:
# wget https://www.incentivespro.com/usb-redirector-linux-x86_64.tar.gz # tar xf usb-redirector-linux-x86_64.tar.gz
Переходим в каталог приложения и запускаем установочный скрипт:
# cd usb-redirector-linux-x86_64/
# ./installer.sh
IncentivesPro USB Redirector for Linux v3.11.2 installation script
Usage: installer.sh install - install both client and server
installer.sh install-server - install server only
installer.sh install-client - install client only
Из вывода понимаем что мы можем установить либо только клиент, либо только сервер, либо и то и другое. Я для примера установлю оба компанента:
# ./installer.sh install
После установки серверной части у вас в системе появится служба usbsrvd.service. Можем проверить её статус:
# systemctl status usbsrvd.service
● usbsrvd.service - IncentivesPro USB Redirector for Linux
Loaded: loaded (/lib/systemd/system/usbsrvd.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-12-20 13:23:21 MSK; 46min ago
Process: 393 ExecStartPre=/sbin/modprobe usbcore (code=exited, status=0/SUCCESS)
Process: 396 ExecStartPre=/bin/sh -c [ -f /usr/local/usb-redirector/bin/tusbd.ko ] && /sbin/insmod /usr/local/usb-redirector/bin/tusbd.ko >/dev/null 2>&1 &>
Process: 398 ExecStart=/usr/local/usb-redirector/bin/usbsrvd (code=exited, status=0/SUCCESS)
Main PID: 399 (usbsrvd)
Tasks: 8 (limit: 2306)
Memory: 3.7M
CPU: 8.155s
CGroup: /system.slice/usbsrvd.service
└─399 /usr/local/usb-redirector/bin/usbsrvd
Работа с сервером (usbsrv)
Для работы с сервером usbredirector используется команда usbsrv.
Список usb-устройств
Посмотреть список usb-устройств можно с помощью опции -l:
# usbsrv -l
=================== LIST OF LOCAL USB DEVICES ===================
1: QEMU USB Tablet - USB Human Interface Device
Vid: 0627 Pid: 0001 Serial: 28754-0000:00:01.2-1
Status: plugged
2: JetFlash Mass Storage Device - USB Mass Storage Device
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Status: plugged
===================== ======================= ===================
Мы видим два устройства, при этом второе устройство это флешка.
Расшаривание usb-устройств
Пока что эти устройства не расшарены. Чтобы расшарить устройство нужно использовать опцию -s и указать номер устройства:
# usbsrv -s 2
====================== OPERATION SUCCESSFUL =====================
USB device has been shared
===================== ======================= ===================
# usbsrv -l
=================== LIST OF LOCAL USB DEVICES ===================
1: QEMU USB Tablet - USB Human Interface Device
Vid: 0627 Pid: 0001 Serial: 28754-0000:00:01.2-1
Status: plugged
2: JetFlash Mass Storage Device - USB Mass Storage Device
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Status: plugged, shared
===================== ======================= ===================
Видим что теперь расшаренное устройство имеет статус plugged, shared — подключено и расшарено.
Использование псевдонимов
Дополнительно мы можем создать псевдоним этому устройству. Для этого используется опция -set-nickname:
# usbsrv -set-nickname "JetFlash" -serial 02CM278QJCLSTCQJ
====================== OPERATION SUCCESSFUL =====================
Nickname has been set
===================== ======================= ===================
# usbsrv -l
=================== LIST OF LOCAL USB DEVICES ===================
1: QEMU USB Tablet - USB Human Interface Device
Vid: 0627 Pid: 0001 Serial: 28754-0000:00:01.2-1
Status: plugged
2: JetFlash
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Status: plugged, shared
===================== ======================= ===================
Как видим, теперь наше usb-устройство имеет понятное имя.
Работа с клиентом (usbclnt)
Для работы с клиентом usbredirector используется команда usbclnt.
Подключение к серверу
Работая с клиентом usbredirector вы вначале должны подключиться к серверу, делается это с помощью опции -a, затем вы должны указать ip и порт сервера. Порт сервера по умолчанию 32032.
# usbclnt -a 192.168.0.25:32032 ====================== OPERATION SUCCESSFUL ===================== USB server has been added ===================== ======================= ===================
Список доступных usb-устройств для подключения
Теперь посмотрим список устройств которые видит клиент:
# usbclnt -l
================== LIST OF REMOTE USB DEVICES ===================
1: USB server at 192.168.0.25:32032
Mode: manual-connect Status: connected
|
`- 2: JetFlash
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Mode: manual-connect Status: available for connection
===================== ======================= ===================
То есть клиент видит только расшаренные на сервере usb-устройства.
Подключение usb-устройств
Чтобы подключить устройство нужно использовать опцию -c и указать номер сервера и номер устройства:
# usbclnt -c 1-2
====================== OPERATION SUCCESSFUL =====================
USB device connected
===================== ======================= ===================
# usbclnt -l
================== LIST OF REMOTE USB DEVICES ===================
1: USB server at 192.168.0.25:32032
Mode: manual-connect Status: connected
|
`- 2: JetFlash
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Mode: manual-connect Status: connected
===================== ======================= ===================
Из вывода мы видим что usb-устройство с псевдонимом JetFlash подключено, то есть находится в статусе connected.
Отключение usb-устройств
Отключить подключенное устройство можно с помощью опции -u:
# usbclnt -u 1-2 ====================== OPERATION SUCCESSFUL ===================== USB device disconnected ===================== ======================= ===================
Включение и выключение автоподключения usb-устройств
Также мы можем настроить автоподключение usb-устройства с помощью опции -auto-connect on:
# usbclnt -auto-connect on 1-2
====================== OPERATION SUCCESSFUL =====================
Device switched to auto-connect mode
===================== ======================= ===================
# usbclnt -l
================== LIST OF REMOTE USB DEVICES ===================
1: USB server at 192.168.0.25:32032
Mode: manual-connect Status: connected
|
`- 2: JetFlash
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Mode: auto-connect Status: connected
Как видите поле Mode изменилось с manual-connect на auto-connect.
А чтобы выключить автоподключение используем опцию -auto-connect off:
# usbclnt -auto-connect off 1-2
====================== OPERATION SUCCESSFUL =====================
Device switched to manual-connect mode
===================== ======================= ===================
# usbclnt -l
================== LIST OF REMOTE USB DEVICES ===================
1: USB server at 192.168.0.25:32032
Mode: manual-connect Status: connected
|
`- 2: JetFlash
Vid: 8564 Pid: 1000 Serial: 02CM278QJCLSTCQJ
Mode: manual-connect Status: connected
Эта операция не отключает usb-устройство, а только выключает его автоподключение.
Итог
Из этой статьи вы узнали про клиент-серверное приложение usbredirector. Узнали что оно распространяется бесплатно только для Linux, но есть платные версии для Windows. Я показал как устанавливается данное приложение и как его можно использовать.