Доставка USB-устройств на виртуальную машину или сервер BareMetal
В данном руководстве вы настроите доставку USB-устройств на сервер Yandex BareMetal через VPN-подключение поверх публичного сегмента сети интернет. Для этого вы используете технологию USB over IP и свободно распространяемое программное обеспечение в составе дистрибутивов Linux
Примечание
Аналогичным образом USB-устройства можно доставить на виртуальную машину Yandex Compute Cloud.
Технология USB over IP позволяет передавать данные USB-устройств по сети (локальной или интернет) так, как если бы они были подключены к компьютеру-клиенту напрямую. Это особенно важно в ситуациях, когда физическое подключение USB-устройств к компьютеру затруднено или невозможно.
С помощью технологии USB over IP:
- USB-устройства можно доставлять в облачные сервисы, а клиентами в отношении удаленных USB-устройств могут выступать виртуальные машины Compute Cloud или серверы BareMetal.
- К ВМ и серверам можно подключать удаленные принтеры, сканеры, камеры, аппаратные токены, флеш-накопители и другие периферийные USB-устройства.
- Для доставки USB-устройств можно использовать как специализированные ПАК решения
, так и свободно распространяемое программное обеспечение. - Ключи, токены, смарт-карты, доставляемые на серверы и ВМ, могут размещаться в контролируемом периметре с ограниченным доступом.
- Подключение к удаленным USB-устройствам может быть ограничено стандартными средствами сетевой безопасности.
Важно
Если на удаленное USB-устройство будут выполняться операции записи, то использование технологии USB over IP требует высокой степени надежности сети. Кроме того, эта технология не подходит для подключения USB-устройств, для которых необходима высокая скорость передачи данных.
Схема решения:
-
USB-клиент на облачной площадке – виртуальная машина или физический сервер под управлением ОС Windows или Linux. В данном руководстве в качестве клиента будет использован физический сервер под управлением ОС Linux Ubuntu 24.04 LTS, арендованный в сервисе Yandex BareMetal.
-
USB-сервер на удаленной площадке – устройство под управлением ОС Linux с подключением к локальной сети и VPN-доступом (если доставка данных USB-устройства осуществляется через интернет). В USB-порты USB-сервера будут физически вставляться USB-устройства. В качестве сервера могут использоваться микро-компьютеры, например Raspberry Pi
. В данном руководстве в качестве сервера будет использован компьютер под управлением ОС Linux Ubuntu 22.04 LTS, оснащенный несколькими USB-портами. -
Программное обеспечение. В данном руководстве доставка USB-устройства на клиент будет осуществлена с помощью программы
usbip
с использованием стандартного набора системных утилит и модулей ядра, входящих в пакетlinux-tools
. -
Подключаемое USB-оборудование:
- USB-накопитель с данными.
- USB-токен.
-
Способ доставки по сети. Доставка удаленных USB-устройств будет выполняться через VPN-подключение поверх публичного сегмента сети интернет с использованием решения WireGuard
.Предлагаемая схема с использованием WireGuard носит демонстрационный характер, вы можете использовать любую другую технологию для связи удаленных серверов.
Чтобы доставить USB-устройства на сервер BareMetal с помощью технологии USB over IP:
- Подготовьте облако к работе.
- Настройте облачную сеть.
- Создайте виртуальную машину для VPN-сервера.
- Создайте приватную подсеть BareMetal.
- Арендуйте сервер BareMetal.
- Настройте VPN.
- Настройте USB over IP.
- Убедитесь в работоспособности решения.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость предлагаемого решения входят:
- плата за использование публичного IP-адреса виртуальной машины (см. тарифы Yandex Virtual Private Cloud);
- плата за вычислительные ресурсы и диски ВМ (см. тарифы Yandex Compute Cloud);
- плата за аренду сервера BareMetal (см. тарифы Yandex BareMetal).
Настройте облачную сеть
Создайте облачную сеть и подсеть
Создайте облачную сеть и подсеть, к которым будет подключена виртуальная машина Compute Cloud – сервер VPN.
-
В консоли управления
выберите каталог, в котором вы будете создавать облачную инфраструктуру. -
В списке сервисов выберите Virtual Private Cloud.
-
Создайте облачную сеть:
- Справа сверху нажмите Создать сеть.
- В поле Имя укажите
sample-network
. - В поле Дополнительно отключите опцию Создать подсети.
- Нажмите Создать сеть.
-
Создайте подсеть:
- На панели слева выберите
Подсети. - Справа сверху нажмите Создать подсеть.
- В поле Имя укажите
subnet-ru-central1-b
. - В поле Зона выберите зону доступности
ru-central1-b
. - В поле Сеть выберите облачную сеть
sample-network
. - В поле CIDR укажите
192.168.11.0/24
. - Нажмите Создать подсеть.
- На панели слева выберите
Создайте группу безопасности
Создайте группу безопасности vpn-sg
для виртуальной машины – сервера VPN.
-
В консоли управления
выберите каталог, в котором вы создаете облачную инфраструктуру. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности и нажмите кнопку Создать группу безопасности. -
В поле Имя задайте имя
vpn-sg
. -
В поле Сеть выберите созданную ранее сеть
sample-network
. -
В блоке Правила создайте следующие правила для управления трафиком:
Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий ssh
22
TCP
CIDR
0.0.0.0/0
Входящий vpn
63665
UDP
CIDR
0.0.0.0/0
Исходящий any
Весь
Любой
CIDR
0.0.0.0/0
-
Нажмите Создать.
Создайте виртуальную машину для VPN-сервера
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины и нажмите кнопку Создать виртуальную машину. -
В блоке Образ загрузочного диска выберите образ Ubuntu 24.04.
-
В блоке Расположение выберите зону доступности
ru-central1-b
. -
В блоке Сетевые настройки:
- В поле Подсеть выберите созданную ранее подсеть
subnet-ru-central1-b
. - В поле Публичный IP-адрес выберите
Автоматически
. - В поле Группы безопасности выберите созданную ранее группу безопасности
vpn-sg
.
- В поле Подсеть выберите созданную ранее подсеть
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя:
yc-user
. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.
- В поле Логин введите имя пользователя:
-
В блоке Общая информация задайте имя ВМ:
wireguard-vpn-server
. -
Нажмите кнопку Создать ВМ.
Совет
Чтобы VPN-соединение не перестало работать в случае остановки и повторного запуска VPN-сервера, сделайте IP-адрес вашего VPN-сервера статическим.
Создайте приватную подсеть BareMetal
- В консоли управления
выберите каталог, в котором вы создаете облачную инфраструктуру. - В списке сервисов выберите BareMetal.
- На панели слева выберите
Приватные подсети и нажмите кнопку Создать подсеть. - В поле Пул выберите пул серверов
ru-central1-m3
. - В поле Имя задайте имя подсети:
subnet-m3
. - Не включая опцию IP-адресация и маршрутизация, нажмите кнопку Создать подсеть.
Арендуйте сервер BareMetal
-
В консоли управления
выберите каталог, в котором вы создаете облачную инфраструктуру. -
В списке сервисов выберите BareMetal и нажмите кнопку Заказать сервер.
-
В поле Пул выберите пул серверов
ru-central1-m3
. -
В блоке Конфигурация выберите подходящую конфигурацию сервера.
-
(Опционально) В блоке Диск настройте разметку дисков:
-
Нажмите кнопку Настроить разделы диска.
-
Укажите параметры разделов. Чтобы создать новый раздел, нажмите кнопку
Добавить раздел.Примечание
Чтобы самостоятельно собрать RAID-массивы и настроить разделы дисков, нажмите кнопку Разобрать RAID.
-
Нажмите кнопку Сохранить.
-
-
В блоке Образ выберите образ Ubuntu 24.04 LTS.
-
В блоке Условия аренды выберите период, на который вы арендуете сервер.
По окончании указанного периода аренда сервера будет автоматически продлена на такой же период. Прервать аренду в течение указанного периода аренды нельзя, но можно отказаться от дальнейшего продления аренды сервера.
-
В блоке Сетевые настройки:
- В поле Приватная подсеть выберите созданную ранее подсеть
subnet-m3
. - В поле Публичный адрес выберите
Автоматически
.
- В поле Приватная подсеть выберите созданную ранее подсеть
-
В блоке Доступ:
-
В поле Пароль воспользуйтесь одним из вариантов создания пароля для root-пользователя:
-
Чтобы сгенерировать пароль для root-пользователя, выберите опцию
Новый пароль
и нажмите кнопку Сгенерировать.Важно
Этот вариант предусматривает ответственность пользователя за безопасность пароля. Сохраните сгенерированный пароль в надежном месте: он не сохраняется в Yandex Cloud, и после заказа сервера вы не сможете посмотреть его.
-
Чтобы использовать пароль root-пользователя, сохраненный в секрете Yandex Lockbox, выберите опцию
Секрет Lockbox
:В полях Имя, Версия и Ключ выберите соответственно секрет, его версию и ключ, в которых сохранен ваш пароль.
Если у вас еще нет секрета Yandex Lockbox, нажмите кнопку Создать, чтобы создать его.
Этот вариант позволяет вам как задать собственный пароль (тип секрета
Пользовательский
), так и использовать пароль, сгенерированный автоматически (тип секретаГенерируемый
).
-
-
В поле Открытый SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к серверу по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемого сервера BareMetal.
-
-
В блоке Информация о сервере в поле Имя задайте имя сервера:
my-usbip-client
. -
Нажмите кнопку Заказать сервер.
Примечание
Подготовка сервера и установка на него операционной системы может занять до 45 минут — в это время сервер будет находиться в статусе Provisioning
. После завершения установки ОС сервер перейдет в статус Ready
.
Настройте VPN
Чтобы настроить доставку USB-устройств на сервер BareMetal с компьютера на удаленной площадке, организуйте VPN-подключение в составе VPN-сервера, развернутого на виртуальной машине Compute Cloud, и двух VPN-клиентов – на сервере BareMetal и на компьютере на удаленной площадке.
Для настройки VPN-подключения в данном руководстве будет использоваться решение с открытым исходным кодом WireGuard
Примечание
На стороне сервера должен быть открыт порт TCP 3240
, трафик на который должен быть разрешен VPN-соединением.
Настройте VPN-сервер
-
Подключитесь по SSH к созданной ранее виртуальной машине
wireguard-vpn-server
. -
Установите WireGuard и необходимые зависимости:
sudo apt update && sudo apt install wireguard resolvconf
-
Включите IP Forwarding в настройках ядра Linux:
-
Откройте файл конфигурации
sysctl.conf
:sudo nano /etc/sysctl.conf
-
Добавьте в конец файла
sysctl.conf
строку:net.ipv4.ip_forward = 1
-
Примените измененные настройки ядра:
sudo sysctl -p
-
-
Сгенерируйте ключи для шифрования VPN-трафика:
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key > /dev/null wg genkey | sudo tee bms_private.key | wg pubkey | sudo tee bms_public.key > /dev/null wg genkey | sudo tee remote_private.key | wg pubkey | sudo tee remote_public.key > /dev/null
В текущей директории созданы шесть файлов:
server_private.key
– содержит закрытый ключ шифрования VPN-сервера.server_public.key
– содержит открытый ключ шифрования VPN-сервера.bms_private.key
– содержит закрытый ключ шифрования VPN-клиента – сервера BareMetal.bms_public.key
– содержит открытый ключ шифрования VPN-клиента – сервера BareMetal.remote_private.key
– содержит закрытый ключ шифрования VPN-клиента на удаленной площадке.remote_public.key
– содержит открытый ключ шифрования VPN-клиента на удаленной площадке.
Сохраните значения всех ключей шифрования, они понадобятся при создании файлов конфигурации WireGuard на соответствующих машинах.
-
Создайте файл конфигурации WireGuard VPN-сервера:
-
Откройте файл конфигурации:
sudo nano /etc/wireguard/wg0.conf
-
Добавьте в файл следующую конфигурацию, указав содержимое полученных на предыдущем шаге ключей шифрования:
[Interface] Address = 192.168.100.1/24 ListenPort = 63665 PrivateKey = <содержимое_файла_server_private.key> [Peer] PublicKey = <содержимое_файла_bms_public.key> AllowedIPs = 192.168.100.2/32 [Peer] PublicKey = <содержимое_файла_remote_public.key> AllowedIPs = 192.168.100.3/32
-
-
Запустите WireGuard:
sudo wg-quick up wg0
Результат:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 192.168.100.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0
Чтобы остановить WireGuard, используйте команду
sudo wg-quick down wg0
.Примечание
Чтобы включить автоматический запуск WireGuard, выполните команду:
sudo systemctl start wg-quick@wg0 && sudo systemctl enable wg-quick@wg0
Настройте VPN-клиенты
-
Подключитесь по SSH к арендованному ранее серверу BareMetal
my-usbip-client
. -
Установите WireGuard и необходимые зависимости:
sudo apt update && sudo apt install wireguard resolvconf
-
Включите IP Forwarding в настройках ядра Linux:
-
Откройте файл конфигурации
sysctl.conf
:sudo nano /etc/sysctl.conf
-
Добавьте в конец файла
sysctl.conf
строку:net.ipv4.ip_forward = 1
-
Примените измененные настройки ядра:
sudo sysctl -p
-
-
Создайте файл конфигурации WireGuard VPN-клиента:
-
Откройте файл конфигурации:
sudo nano /etc/wireguard/wg0.conf
-
Добавьте в файл следующую конфигурацию:
[Interface] PrivateKey = <содержимое_файла_bms_private.key> Address = 192.168.100.2/32 [Peer] PublicKey = <содержимое_файла_server_public.key> Endpoint = <публичный_IP-адрес_ВМ>:63665 AllowedIPs = 192.168.100.0/24 PersistentKeepalive = 15
Где:
PrivateKey
– содержимое созданного при настройке VPN-сервера файлаbms_private.key
с закрытым ключом шифрования этого VPN-клиента.PublicKey
– содержимое созданного при настройке VPN-сервера файлаserver_public.key
с открытым ключом шифрования VPN-сервера.<публичный_IP-адрес_ВМ>
– публичный IP-адрес виртуальной машины с развернутым VPN-сервером. Публичный IP-адрес ВМ можно узнать в консоли управления , в поле Публичный IPv4-адрес блока Сеть на странице с информацией о ВМ.
-
-
Запустите WireGuard:
sudo wg-quick up wg0
Результат:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 192.168.100.2/32 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] ip -4 route add 192.168.100.0/24 dev wg0
-
Аналогичным образом настройте VPN-клиент WireGuard на компьютере на удаленной площадке, при этом в файле конфигурации WireGuard
wg0.conf
в полеPrivateKey
укажите содержимое созданного при настройке VPN-сервера файлаremote_private.key
с закрытым ключом шифрования VPN-клиента на удаленной площадке.
Проверьте работу VPN-соединения
На этом этапе VPN-соединение установлено. Чтобы проверить его работу:
-
Подключитесь по SSH к серверу BareMetal
my-usbip-client
и выполните команду:ping 192.168.100.3 -c 5
Результат:
PING 192.168.100.3 (192.168.100.3) 56(84) bytes of data. 64 bytes from 192.168.100.3: icmp_seq=1 ttl=63 time=29.9 ms 64 bytes from 192.168.100.3: icmp_seq=2 ttl=63 time=30.9 ms 64 bytes from 192.168.100.3: icmp_seq=3 ttl=63 time=35.5 ms 64 bytes from 192.168.100.3: icmp_seq=4 ttl=63 time=30.5 ms 64 bytes from 192.168.100.3: icmp_seq=5 ttl=63 time=28.2 ms --- 192.168.100.3 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 28.249/30.987/35.453/2.405 ms
Сетевая связность между VPN-клиентами установлена, пакеты проходят без потерь.
-
В терминале компьютера на удаленной площадке выполните команду:
ping 192.168.100.2 -c 5
Результат:
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data. 64 bytes from 192.168.100.2: icmp_seq=1 ttl=63 time=30.2 ms 64 bytes from 192.168.100.2: icmp_seq=2 ttl=63 time=28.4 ms 64 bytes from 192.168.100.2: icmp_seq=3 ttl=63 time=31.6 ms 64 bytes from 192.168.100.2: icmp_seq=4 ttl=63 time=27.4 ms 64 bytes from 192.168.100.2: icmp_seq=5 ttl=63 time=27.6 ms --- 192.168.100.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 27.381/29.041/31.600/1.608 ms
Сетевая связность между VPN-клиентами установлена, пакеты проходят без потерь.
Настройте USB over IP
Доставка USB-устройства на сервер BareMetal будет осуществлена с помощью программы usbip
.
Настройте usbip-сервер
В качестве usbip-сервера будет выступать компьютер на удаленной площадке, оснащенный несколькими USB-портами. В терминале этого компьютера:
-
Установите дополнительные пакеты, необходимые для работы
usbip
:sudo apt install linux-tools-`uname -r`
-
Загрузите необходимые для работы
usbip
модули ядра:sudo modprobe usbip-core sudo modprobe usbip-host sudo modprobe vhci-hcd
Где:
usbip-core
– главный компонент серверной части.usbip-host
– компонент, отвечающий за управление USB-устройствами.vhci-hcd
– компонент, отвечающий за экспорт USB-устройств.
Примечание
Чтобы настроить автоматическую загрузку этих модулей при запуске системы, откройте файл
/etc/modules-load.d/modules.conf
в любом текстовом редакторе и добавьте в него строки:usbip-core usbip-host vhci-hcd
-
Вставьте USB-устройства в порты компьютера.
В данном руководстве в качестве примера будут использоваться USB-флеш-накопитель
и USB-устройство YubiKey . -
Запросите список доступных для публикации USB-устройств:
sudo usbip list -l
Результат:
- busid 1-1.2 (0951:1666) Kingston Technology : DataTraveler 100 G3/G4/SE9 G2/50 (0951:1666) - busid 1-1.3 (058f:a001) Alcor Micro Corp. : unknown product (058f:a001) - busid 1-1.4 (0cf3:3005) Qualcomm Atheros Communications : AR3011 Bluetooth (0cf3:3005) - busid 1-1.5 (1050:0407) Yubico.com : Yubikey 4/5 OTP+U2F+CCID (1050:0407) - busid 2-1.1 (0458:6001) KYE Systems Corp. (Mouse Systems) : GF3000F Ethernet Adapter (0458:6001)
-
Опубликуйте устройства с
busid 1-1.2
иbusid 1-1.5
:sudo usbip bind -b 1-1.2 sudo usbip bind -b 1-1.5
Результат:
usbip: info: bind device on busid 1-1.2: complete usbip: info: bind device on busid 1-1.5: complete
-
Запустите демон
usbipd
:sudo usbipd -4 -D
На этом этапе выбранные USB-устройства опубликованы и доступны для импорта по сети на стороне usbip-клиента.
Настройте usbip-клиент
В качестве usbip-клиента будет выступать сервер BareMetal my-usbip-client
.
-
Подключитесь по SSH к серверу BareMetal
my-usbip-client
. -
Установите дополнительные пакеты, необходимые для работы
usbip
:sudo apt install linux-tools-`uname -r`
Примечание
Если в качестве usbip-клиента вы используете виртуальную машину Yandex Compute Cloud, дополнительно установите пакет
linux-image-extra-virtual
:sudo apt install linux-image-extra-virtual
-
Загрузите необходимые для работы
usbip
модули ядра:sudo modprobe usbip-core sudo modprobe usbip-host sudo modprobe vhci-hcd
Где:
usbip-core
– главный компонент серверной части.usbip-host
– компонент, отвечающий за управление USB-устройствами.vhci-hcd
– компонент, отвечающий за экспорт USB-устройств.
-
Запросите список доступных для импорта с usbip-сервера USB-устройств:
usbip list -r 192.168.100.3
Результат:
Exportable USB devices ====================== - 192.168.100.3 1-1.5: Yubico.com : Yubikey 4/5 OTP+U2F+CCID (1050:0407) : /sys/devices/platform/vhci_hcd.0/usb1/1-1/1-1.5 : (Defined at Interface level) (00/00/00) 1-1.2: Kingston Technology : DataTraveler 100 G3/G4/SE9 G2/50 (0951:1666) : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2 : (Defined at Interface level) (00/00/00)
-
Импортируйте устройства с usbip-клиента:
usbip attach -r 192.168.100.3 -b 1-1.2 usbip attach -r 192.168.100.3 -b 1-1.5
На этом этапе выбранные USB-устройства импортированы по сети на сервер BareMetal.
Убедитесь в работоспособности решения
Чтобы проверить подключение к удаленным USB-устройствам, подключитесь по SSH к серверу BareMetal my-usbip-client
и выполните в терминале несколько проверочных действий:
-
Выполните команду, чтобы посмотреть журнал
dmesg
:dmesg
Результат:
Флеш-накопительУстройство YubiKey... [522540.280156] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3) [522540.280165] vhci_hcd vhci_hcd.0: devid(65539) speed(3) speed_str(high-speed) [522540.280177] vhci_hcd vhci_hcd.0: Device attached [522540.500110] usb 3-1: new high-speed USB device number 2 using vhci_hcd [522540.618122] usb 3-1: SetAddress Request (2) to port 0 [522540.671557] usb 3-1: New USB device found, idVendor=0951, idProduct=1666, bcdDevice= 0.01 [522540.671571] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [522540.671577] usb 3-1: Product: DataTraveler 3.0 [522540.671581] usb 3-1: Manufacturer: Kingston [522540.671585] usb 3-1: SerialNumber: D067E5162216F1B14605943F [522540.690082] usb-storage 3-1:1.0: USB Mass Storage device detected [522540.690801] scsi host7: usb-storage 3-1:1.0 [522540.691020] usbcore: registered new interface driver usb-storage [522540.694262] usbcore: registered new interface driver uas [522541.728481] scsi 7:0:0:0: Direct-Access Kingston DataTraveler 3.0 PQ: 0 ANSI: 6 [522541.729122] sd 7:0:0:0: Attached scsi generic sg2 type 0 [522541.763235] sd 7:0:0:0: [sdc] 15109516 512-byte logical blocks: (7.74 GB/7.20 GiB) [522541.775808] sd 7:0:0:0: [sdc] Write Protect is off [522541.775829] sd 7:0:0:0: [sdc] Mode Sense: 4f 00 00 00 [522541.788402] sd 7:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [522541.890019] sdc: sdc1 [522541.890454] sd 7:0:0:0: [sdc] Attached SCSI removable disk ...
На стороне сервера было смонтировано и отдано в удаленный доступ USB-устройство производителя
Kingston
, которое является блочным флеш-накопителем. Устройство было распознано как/dev/sdc
.... [1039400.471187] vhci_hcd vhci_hcd.0: pdev(0) rhport(1) sockfd(3) [1039400.471211] vhci_hcd vhci_hcd.0: devid(65540) speed(2) speed_str(full-speed) [1039400.471223] vhci_hcd vhci_hcd.0: Device attached [1039400.640976] vhci_hcd: vhci_device speed not set [1039400.697969] usb 3-2: new full-speed USB device number 4 using vhci_hcd [1039400.763979] vhci_hcd: vhci_device speed not set [1039400.820985] usb 3-2: SetAddress Request (4) to port 1 [1039400.872797] usb 3-2: New USB device found, idVendor=1050, idProduct=0407, bcdDevice= 5.43 [1039400.872812] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [1039400.872818] usb 3-2: Product: YubiKey OTP+FIDO+CCID [1039400.872822] usb 3-2: Manufacturer: Yubico [1039400.894510] input: Yubico YubiKey OTP+FIDO+CCID as /devices/platform/vhci_hcd.0/usb3/3-2/3-2:1.0/0003:1050:0407.0003/input/input7 [1039400.977251] hid-generic 0003:1050:0407.0003: input,hidraw2: USB HID v1.10 Keyboard [Yubico YubiKey OTP+FIDO+CCID] on usb-vhci_hcd.0-2/input0 [1039400.987196] hid-generic 0003:1050:0407.0004: hiddev0,hidraw3: USB HID v1.10 Device [Yubico YubiKey OTP+FIDO+CCID] on usb-vhci_hcd.0-2/input1 ...
На стороне сервера было смонтировано и отдано в удаленный доступ USB-устройство производителя
Yubico
. -
Убедитесь в наличии доступа к данным на удаленных USB-устройствах:
Флеш-накопительУстройство YubiKey-
Получите информацию о блочных устройствах сервера BareMetal:
lsblk /dev/sdc
Результат:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS ... sdc 8:32 1 7.2G 0 disk └─sdc1 8:33 1 7.2G 0 part
-
Смонтируйте раздел флеш-накопителя
/dev/sdc1
в директорию/mnt/sdc1
:mkdir -p /mnt/sdc1 mount /dev/sdc1 /mnt/sdc1
-
Посмотрите список смонтированных устройств и доступное для записи дисковое пространство:
df -h
Результат:
Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 7.2G 16K 7.2G 1% /mnt/sdc1
-
Скопируйте файл конфигурации WireGuard на удаленный USB-накопитель:
cp -r /etc/wireguard /mnt/sdc1
-
Просмотрите список файлов на удаленном USB-накопителе:
ls -la /mnt/sdc1/wireguard/
Результат:
total 48 drwxr-xr-x 2 root root 16384 Apr 20 19:46 . drwxr-xr-x 4 root root 16384 Jan 1 1970 .. -rwxr-xr-x 1 root root 247 Apr 20 19:46 wg0.conf
Проверка завершена: файл успешно скопирован на удаленный USB-накопитель.
-
Установите набор утилит, необходимых для работы с аппаратным токеном YubiKey:
apt install yubico-piv-tool
-
Выполните запрос статуса оборудования Yubico:
yubico-piv-tool -a status
Результат:
Version: 5.4.3 Serial Number: ******** CHUID: No data available CCC: No data available Slot 9c: Algorithm: RSA2048 Subject DN: CN=5-ay-yubi Issuer DN: CN=ChangeMe Fingerprint: 15e4ec25******************************************************** Not Before: Feb 19 08:29:13 2025 GMT Not After: Feb 16 08:29:13 2035 GMT PIN tries left: 3
-
Получите открытый сертификат клиента из хранилища аппаратного токена Yubico, указав в параметре
-s
значение поляSlot
из вывода предыдущей команды:yubico-piv-tool -a read-cert -s 9c
Результат:
-----BEGIN CERTIFICATE----- MIIDUjCCA******************************************************* **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** **************************************************************** ***************************************t7Ts9P8CTUsyw= -----END CERTIFICATE-----
Проверка завершена: оборудование Yubico возвращает корректный статус, данные сертификата из хранилища токена считываются без ошибок.
-
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- Удалите виртуальную машину.
- Удалить сервер BareMetal нельзя. Вместо этого откажитесь от продления аренды сервера.