В этой статье я покажу процесс установки и настройки сервера 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. Я показал как устанавливается данное приложение и как его можно использовать.