В данной статье рассматривается предоставление удалённого доступа к USB-устройствам с помощью сервиса USB-over-IP. При принятии решения о возможности использования этого сервиса следует помнить, что:
что может противоречить принятой политике безопасности. Недопустимо использовать сервис USB-over-IP для предоставления удалённого доступа к носителям, содержащим конфиденциальные данные. В статье приводятся примеры автоматического запуска службы, однако следует помнить, что после перезагрузки компьютера к нему могут оказаться подключены совсем другие устройства, получившие те же идентификаторы busid, которые автоматически станут доступны всем удалённым пользователям. |
|
На сервере и на клиенте должен быть установлен пакет linux-tools соответствующий версии используемого ядра. При наличии подключенных репозиториев установить пакет можно выполнив на сервере и клиенте команду:
| sudo apt install linux-tools-`uname -r` |
На сервере загрузить необходимые модули ядра, для чего выполнить команду:
| sudo modprobe usbip-core sudo modprobe usbip-host sudo modprobe vhci-hcd |
Для того, чтобы модули загружались автоматически при загрузке ОС можно создать в каталоге /etc/modules-load.d/ файл с именем, например, /etc/modules-load.d/usb-over-ip-load.conf, и перечислить в нем названия загружаемых модулей:
usbip-core usbip-host vhci-hcd |
Запустить процесс как сервисную службу:
| sudo usbipd -D |
Для того, чтобы usbipd запускался автоматически при старте компьютера можно оформить его в виде системного юнита, для чего:
Создать файл /etc/systemd/system/usbipd.service со следующим содержимым:
[Unit] Description=USBIPd [Service] ExecStart=/usr/bin/usbipd -D Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target |
Обновить конфигурацию сервисов и разрешить запуск созданного юнита:
| sudo systemctl daemon-reload sudo systemctl enable usbipd |
Проверка подключенных к локальному компьютеру USB -устройств:
| busid 1-2 (03f0:4c17) Hewlett-Packard : EWS UPD (03f0:4c17) |
Идентификаторы busid далее используются для привязки экспортируемых устройств.
Если при выполнении указанной выше команды выдаётся сообщение об ошибке открытия по пути /usr/share/hwdata//usb.ids, то создать каталог /usr/share/hwdata/ и создать в нём ссылку на нужный файл:
|
Далее привязать устройство к службе usbipd, после чего оно станет доступно извне:
| sudo usbip bind -b <bus ID устройства> |
Если используется межсетевой экран, то для корректной работы usbipd должен быть открыт порт 3240. |
Проверить, что устройство действительно привязано и доступно, можно выполнив на сервере команду:
| usbip list -r localhost |
Настройка клиента
Установить пакеты:
| sudo apt install linux-tools-`uname -r` |
Загрузить необходимые модули ядра:
| sudo modprobe usbip-core sudo modprobe vhci-hcd |
Автоматическую загрузку модулей ядра для клиента можно сделать так же, как описано выше для сервера.
Проверить видимость устройств, подключенных к серверу, можно выполнив на клиентском компьютере команду:
Exportable USB devices |
Если при выполнении указанной выше команды выдаётся сообщение об ошибке открытия по пути /usr/share/hwdata//usb.ids, то создать каталог /usr/share/hwdata/ и создать в нём ссылку на нужный файл:
|
Подключить USB-устройство на клиенте:
| sudo usbip attach -r <server> -b <bus ID> |
После подключения устройство будет доступно как физически подключенный накопитель, и может монтироваться/отмонтироваться командами mount/umount так же, как физические накопители.
Для отключения устройства:
Проверить, к какому порту присоединено устройство:
| sudo usbip port |
для единственного устройства это будет порт 00.
Отключить устройство (используется номер порта 00, обычный для единственного устройства):
| sudo usbip detach -p 00 |