Usbredirector – сервер usb over ip

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



2023-12-21T10:40:15
Сервера Linux