WslでUSB接続 - Yubikey

2023/01/10,

GitHub - dorssel/usbipd-win: Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.

上記ソフトを利用すると、WSL2でUSBを接続することができる。

インストール

Windows側、Powershell

winget install --interactive --exact dorssel.usbipd-win 

WSL側

sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20

USBデバイスの確認

Powershell

usbipd wsl list 

接続したいUSBデバイスのbus-idを確認する。

USBデバイスの接続

Powershell(管理者権限必要)

 usbipd wsl attach --busid <bus-id>

Yubikey を転送してみる

YubikeyをWSLに転送してみた。2-1は自分のパソコンのYubikeyのbus-id。パソコンによって異なると思われる。

Powershell側

usbipd wsl attach --busid 2-1

WSL側

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 1050:0407 Yubico.com Yubikey 4 OTP+U2F+CCID
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

で、YubikeyがUSBとして認識されていることが確認できた。しかしgpg --card-statusと入力しても、動作しない。

エラーメッセージを見ると、scdaemonがないと出ている。インストールする

 sudo apt install scdaemon

だが、gpg --card-statusを実行しても、動作しない。

Yubikey · Discussion #127 · dorssel/usbipd-win · GitHub

上記リンクを参考に、pcscdをインストールする。

sudo apt install pcscd

そして有効化する。

sudo service pcscd start

gpg --card-statusでYubikeyが認識されることが確認できた。

再起動するたびにpcscdは停止するので都度コマンド入力する必要がありそう。

それかbashrc等に仕込むか。

いつの間にか、wslでsystemdが利用できるようになっていた。以下のURLを参考にsystemdで自動起動するように設定すると、再起動してもpcscdが有効になっている。

https://learn.microsoft.com/ja-jp/windows/wsl/systemd

注意点

WSL側でYubikeyを利用できるようになったけど、WSL側で利用している間は、Windows側でYubikeyは利用できないので注意

……もしYubikeyを二本持っているのなら、パソコンに二本とも差して片方Windows、片方WSLで利用するという手もある。Yubikeyはバックアップ用としても一本持つのが推奨されているので、二本所有している人は結構いそうだし案外できそう。

参考

USB デバイスを接続する | Microsoft Learn


Ouvill(おーびる)

この記事はOuvill(おーびる)が書きました。IT関連の記事執筆やサイト作成や、ウェブアプリケーション開発の業務委託などのご依頼を賜っております。

ご要件がある方はコンタクトフォームからご連絡ください。

@Ouvill

最新記事