Оглавление |
---|
Предупреждение |
---|
В данной статье рассматривается предоставление удалённого доступа к USB-устройствам с помощью сервиса USB-over-IP. При принятии решения о возможности использования этого сервиса следует помнить, что:
что может противоречить принятой политике безопасности. Недопустимо использовать сервис USB-over-IP для предоставления удалённого доступа к носителям, содержащим конфиденциальные данные. В статье приводятся примеры автоматического запуска службы, однако следует помнить, что после перезагрузки компьютера к нему могут оказаться подключены совсем другие устройства, получившие те же идентификаторы busid, которые автоматически станут доступны всем удалённым пользователям. |
Информация | ||
---|---|---|
| ||
|
Установка пакетов на сервере и на клиенте
На сервере и на клиенте должен быть установлен пакет linux-tools соответствующий версии используемого ядра. При наличии подключенных репозиториев установить пакет можно выполнив на сервере и клиенте команду:
Command |
---|
sudo apt install linux-tools-`uname -r` |
Настройка сервера
На сервере загрузить необходимые модули ядра, для чего выполнить команду:
Command |
---|
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 |
Запустить процесс как сервисную службу:
Command |
---|
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
Обновить конфигурацию сервисов и разрешить запуск созданного юнита:
Command sudo systemctl daemon-reload
sudo systemctl enable usbipd
Проверка подключенных к локальному компьютеру USB -устройств:
Command | ||
---|---|---|
| ||
busid 1-2 (03f0:4c17) Hewlett-Packard : EWS UPD (03f0:4c17) |
Идентификаторы busid далее используются для привязки эскспортируемых устройств.
Информация | ||
---|---|---|
Если при выполнении указанной выше команды выдаётся сообщение об ошибке открытия по пути /usr/share/hwdata//usb.ids, то создать каталог /usr/share/hwdata/ и создать в нём ссылку на нужный файл:
|
Далее привязать устройство к службе usbipd, после чего оно станет доступно извне:
Command |
---|
sudo usbip bind -b <bus ID устройства> |
Информация |
---|
Если используется межсетевой экран, то для корректной работы usbipd должен быть открыт порт 3240. |
Проверить, что устройство действительно привязано и доступно, можно выполнив на сервере команду:
Command |
---|
usbip list -r localhost |
Настройка клиента
Установить пакеты:
Command |
---|
sudo apt install linux-tools-`uname -r` |
Загрузить необходимые модули ядра:
Command |
---|
sudo modprobe usbip-core sudo modprobe vhci-hcd |
Автоматическую загрузку модулей ядра для клиента можно сделать так же, как описано выше для сервера.
Проверить видимость устройств, подключенных к серверу, можно выполнив на клиентском компьютере команду:
Command | ||
---|---|---|
| ||
Exportable USB devices |
Информация | ||
---|---|---|
Если при выполнении указанной выше команды выдаётся сообщение об ошибке открытия по пути /usr/share/hwdata//usb.ids, то создать каталог /usr/share/hwdata/ и создать в нём ссылку на нужный файл:
|
Подключить USB-устройство на клиенте:
Command |
---|
sudo usbip attach -r <server> -b <bus ID> |
После подключения устройство будет доступно как физически подключенный накопитель, и может монтироваться/отмонтироваться командами mount/umount так же, как физические накопители.
Для отключения устройства:
Проверить, к какому порту присоединено устройство:
Command sudo usbip port для единственного устройства это будет порт 00.
Отключить устройство (используется номер порта 00, обычный для единственного устройства):
Command sudo usbip detach -p 00