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

Сводка
Usbredirector – сервер usb over ip
Имя статьи
Usbredirector – сервер usb over ip
Описание
В этой статье я покажу процесс установки и настройки сервера usb usbredirector на сервере Debian 12

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *