Иногда бывает необходимо получить доступ к USB устройству подключенному к одному из компьютеров сети. Это может быть флешка данные из которой нужно скопировать на один из компьютеров или в виртуальную машину или же, как более сложный вариант - usb принтер который нужно сделать доступным по сети для нескольких устройств.
В этой статье мы рассмотрим несколько программ позволяющих реализовать такую возможность. Одной из них будет USB Network Gate. Это платная программа, но она позволяет расшарить устройства usb по сети в Linux очень быстро и просто. У программы удобный графический интерфейс и очень простая настройка. Также рассмотрим свободную альтернативу usbip, с помощью которой можно расшарить usb по сети в терминале. Начнем с коммерческой программы.
Содержание статьи
Usb Network Gate
Usb Network Gate - это программа от Elitma Software, позволяющая получить доступ к любым USB устройствам подключенным к вашему компьютеру через сеть. При чем это может быть не только локальная сеть но и интернет.
У программы кроме версии для Linux есть версии для Windows, Mac и даже приложение для Android. Лицензия с возможностью передать по сети один USB порт стоит $89.99 но у нее есть пробный период размером 14 дней. После окончанию пробного периода вы не можете расшаривать свои устройства, но зато можете подключать уже розданные.
Установка Usb Newtork Gate
Установка USB Network Gate в Linux выполняется очень просто. Скачать установочный пакет для своего дистрибутива можно на официальном сайте.
Здесь достаточно просто нажать кнопку скачать, а затем выбрать версию для своего дистрибутива:
После завершения загрузки, для установки перейдите в папку с файлом и выполните:
dpkg -i usb_network_gate.deb
Для Ubuntu или:
rpm -i usb_network_gate.rpm
Для RedHat и других использующих rpm систем. Возможно для работы программы понадобится библиотека libudev.so.0, если такой версии библиотеки нет в вашей системе создайте ссылку на libudev.so.1 следующей командой:
ln -s /usr/lib/libudev.so.1 /usr/lib/libudev.so.0
Раздача USB устройств по сети
Запустить программу можно из главного меню или выполнив в терминале:
eveusb
Главное окно программы выглядит вот так:
Чтобы расшарить USB устройство по сети достаточно кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню пункт Share.
В открывшимся окне можно увидеть информацию об устройстве и указать дополнительные настройки, например стоит ли использовать шифрование, сжатие или пароль для аутентификации соединения:
На удаленной машине, чтобы подключить наше устройство, сначала нужно его найти. Для этого перейдите на вкладку Remote USB Devices и нажмите кнопку Find:
В открывшимся окне, если компьютеры находятся в локальной сети можно просто нажать Find All, если же нет нужно указать ip адрес компьютера на котором расшаренно USB устройство, а затем нажать кнопку Find:
Дальше остается только добавить выбранное устройство с помощью кнопку Add remote device.
Чтобы подключить USB просто выберите в контекстном меню опцию Connect:
Дальше вы увидите, что состояние изменилось на Connected, а к системе было подключено новое USB устройство:
Чтобы его отключить просто выберите опцию Disconnect.
USBIp
Это бесплатная утилита с открытым исходным кодом для доступа к USB устройствам по сети. Она во многом проигрывает USB Network Gate, в основном через отсутствие графического интерфейса и сложной настройки.
Установка usbip
Устанавливается программа из официальных репозиториев:
sudo apt install linux-tools-generic
Или для Red Hat:
sudo yum install usbip
Нужно следить чтобы версия программы подходила к вашему ядру, потому что новые версии обычно не совсем совместимы со старыми версиями ядра. Например на данный момент для ядра 4.2 актуальна версия 2.0. Поэтому соблюдайте совместимость и все будет работать, а если не работает вы уже знаете в чем проблема.
Настройка сервера
Загрузим нужные модули ядра:
sudo modprobe usbip-host
sudo modprobe usbip-core
Запускаем демон:
sudo usbipd -D
Программа готова к использованию. Теперь с помощью lsusb находим наше устройство:
lsusb
Нам нужна пара VendorID:DeviceID, вот она: 13fe:5500. Теперь выполните:
sudo usbip list -l
Программа просканирует все подключенные устройства и покажет и в нужном формате, вместе с их busid. Опция -l указывает что нужно сканировать локальные устройства. Как видите наше USB устройство первое в списке.
Теперь, когда мы знаем busid можно расшарить USB устройство по сети в Linux:
usbip bind -b 2-2
Готово, наше USB устройство расшарено, осталось подключить его на клиентской машине. Смотрим список доступных устройств:
sudo usbip list -r 192.168.56.1
После -r нужно указать ваш IP адрес. Осталось подключить наше устройство:
sudo usbip attach -r 192.168.56.1 -b 2-2
Чтобы отключить устройство нужно сначала узнать его порт:
sudo usbip port
Затем отключаем:
sudo usbip detach 00
И прекращаем шаринг устройства по сети на сервере:
sudo usbip unbind -b 2-2
Вот и все. Как видите работать с консольной программой намного сложнее, но для тех кто не хочет тратить деньги на лицензию, она станет отличным решением. Теперь вы сможете без проблем например расшарить принтер по сети в Linux или любое другое USB устройство не зависимо от используемого дистрибутива.
Хороша я статья!Надо попробовать расшарить WIN10,FREEBSD и LINUX
usb принтеры расшариваются с помощью cups, там достаточно простая настройка, еще вариант - виртуальный принтер гугл.
С удовольствием читаю некоторые статьи, спасибо. Но читать о платных программах для Linux? Извините, мимо.
Согласен. По моему каждый член сообщества Linux уже до костей состоит из неизменного желания использовать консоль и править конфиги, но не как уж не устанавливать платную прогу из-за gui
C usbip на ubuntu 16.04 получилось и расшарить и приконектить расшаренную флешку на другой ubuntu 16.04. А как приконектить расшаренную флешку на Windows, есть ли клиенты поддерживающие эту версию usbip для Windows XP?
Да, есть - https://sourceforge.net/projects/usbip/
А кто-нибудь смог поднять его под CentOS?