YubiKey
YubiKey は小さな USB セキュリティトークンです。モデルにも依りますが、以下のようなことができます:
- スマートカードのように振る舞う(CCID protocol を使用) - PGP と PIV 秘密鍵の両方を保存できます。
- Universal 2nd Factor (U2F) リクエストを処理する。
- 約 30 個の OATH 資格情報を保存・クエリする。
- Yubico OTP モードか HMAC-SHA1 モードでチャレンジレスポンス認証を処理する。
- ワンタイムパスワード (OTP) を生成する - Yubico's AES based standard。
- 63 文字までの静的パスワードを"入力"する。
多くの機能を提供する一方、YubiKey の新しいバージョンはオープンソースとしてリリースされていません。代替は Solo です。
目次
- 1 インストール
- 2 入力
- 3 出力
- 4 USB 接続モード
- 5 ワンタイムパスワード
- 6 OATH
- 7 U2F
- 8 CCID スマートカード
- 9 使用例
- 10 ヒントとテクニック
- 11 メンテナンス/アップグレード
- 12 トラブルシューティング
- 12.1 YubiKey が HID デバイスとして機能しない
- 12.2 ykman が YubiKey に接続できない
- 12.3 Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions.
- 12.4 YubiKey がゲスト VM 内でバインドできない
- 12.5 Error: [key] could not be locally signed or gpg: No default secret key: No public key
- 12.6 YubiKey が Yubico Authenticator で消えたり現れたりする
- 12.7 YubiKey core error: timeout
インストール
管理ツール
- YubiKey Manager — USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール(
ykman
)。オプションの GUI あり。
- YubiKey Personalization — OTP USB 接続を通して YubiKey の設定とクエリをするためのライブラリとツール。ykman よりも強力ですが、使うのが難しいです。オプションの GUI あり。
- https://developers.yubico.com/yubikey-personalization/ || yubikey-personalization, yubikey-personalization-gui
認証ツール
- Yubico PAM — Yubico OTP または チャレンジレスポンス認証による PAM ユーザ認証。
- Yubico Authenticator for Desktop — USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装(YubiKey Standard と Edge)と新しい OATH 実装をサポート(YubiKey NEO と 4)。
- libfido2 — クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。
- YubiKey Full Disk Encryption — チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。
入力
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:
- 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。
- 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。
- スマートカードを挿入/除去する。
出力
YubiKey は以下の入力を出力に変換します:
- キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)
- 組み込みの LED は:
- 挿入した際に一度光ります。トラブルシューティングに便利です。
- API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。
- USB を通した API 応答。これは以下のように使用されます:
- チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)
- U2F チャレンジレスポンス認証
- CCID スマートカード関連のリクエスト
USB 接続モード
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:
プロトコル | インターフェイス |
---|---|
OTP | Keyboard HID |
FIDO | Other HID |
PIV | CCID |
OpenPGP | CCID |
OATH | CCID |
ykman
は "modes" という用語を使用します、OTP、FIDO、CCID と名付けられています。
有効になっているモードを取得
バージョン 5 以前の YubiKey では:
$ ykman mode
Current connection mode is: OTP+FIDO+CCID
YubiKey バージョン 5 では:
$ ykman info
Device type: YubiKey 5 NFC Serial number: XXXXXXXXX Firmware version: 5.4.3 Form factor: Keychain (USB-A) Enabled USB interfaces: OTP, FIDO, CCID NFC transport is enabled. Applications USB NFC FIDO2 Enabled Enabled OTP Enabled Enabled FIDO U2F Enabled Enabled OATH Enabled Enabled YubiHSM Auth Enabled Enabled OpenPGP Enabled Enabled PIV Enabled Enabled
モードをセット
すべてのモードが出荷時から有効化されています。変更するには:
$ ykman mode [OPTIONS] <MODE>
<MODE>
には文字列を使用できます。例えば、OTP+FIDO+CCID
。短い形式もあります:o+f+c
。<MODE>
にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。
以下にモード番号の表があります:
0 | OTP device only. |
1 | CCID device only. |
2 | OTP/CCID composite device. |
3 | U2F device only. |
4 | OTP/U2F composite device. |
5 | U2F/CCID composite device. |
6 | OTP/U2F/CCID composite device. |
81 | CCID device only, with touch-eject. |
オプション:
--touch-eject
- ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。--autoeject-timeout <SECONDS>
- 一定時間立つとスマートカードを自動的に除去します。--touch-eject
と同じような制限があります。--chalresp-timeout <SECONDS>
- チャレンジレスポンス認証のタイムアウトを設定します。
さらなる情報は、$ ykman mode --help
を見てください。
ワンタイムパスワード
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち1つを設定できます:
- Yubico OTP
- OATH-HOTP
- OATH-TOTP
- チャレンジレスポンス認証
- 静的パスワード
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。$ ykman otp swap
により、スロット1とスロット2を入れ替えることはできます。
工場出荷時の設定
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。
Yubico OTP
Yubico OTP は共通鍵暗号に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの AES 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。
YubiCloud と検証サーバー
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば)yubico-pam によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーのオープンソースの実装も提供しています。
設定と使用
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):
$ ykman otp yubiotp --generate-key --upload 2
さらなる情報は、$ ykman otp yubiotp --help
で見てください。
セキュリティリスク
AES 鍵の漏洩
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。
検証リクエスト/レスポンスの盗聴
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。
チャレンジレスポンス認証
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。
これは以下のように利用できます:
- 真の2要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。
- 「準」2要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。
2つのチャレンジレスポンス認証アルゴリズムがあります:
- HMAC-SHA1
- Yubico OTP
これは、yubikey-personalization-gui を使って GUI で、あるいは以下の指示で設定できます。
HMAC-SHA1 アルゴリズム
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:
$ ykman otp chalresp --generate 2
キーを生成するための --generate
フラグは省略できます。さらなる情報は $ ykman otp chalresp --help
で見てください。
Yubico OTP アルゴリズム
ykman
は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、ykpersonalize
を使用できます。スロット2にランダムな鍵を生成してください:
$ ykpersonalize -2 -ochal-resp -ochal-yubico
さらなる情報は ykpersonalize(1) を見てください。
チャレンジを送信
チャレンジを送って、レスポンスを取得するには:
$ ykchalresp -slot challenge
静的パスワード
静的パスワードも生成できます:
$ ykman otp static --generate slot
あるいは、パスワードを与えることも:
$ ykman otp static slot password
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は ykman otp static --help
で見てください。
エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット(cbdefghijklnrtuv
)、数値 0-9
、!
に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。
Yubico はこの問題に関する白書を提供しています。
OATH
YubiKey は2つの OATH 実装を提供します:
- OATH API
- 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)
- OTP slot
- 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)
OATH API
GUI がお好みならば、yubioath-desktop を使用できます。
ykman
は、ykman oath uri
を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:
$ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:
$ ykman oath add --touch name secret
HOTP 鍵をプログラムします:
$ ykman oath add --oath-type HOTP name secret
認証情報を一覧表示します:
$ ykman oath list
コードを生成します:
$ ykman oath code query
利用可能なサブコマンドをすべて見るには、ykman oath --help
を実行してください。それぞれのサブコマンドの情報を見るには、ykman oath (subcommand) --help
を使ってください。
OTP スロット実装
スロット2で HOTP をプログラムします:
$ ykman otp hotp 2 key
TOTP をプログラムします:
$ ykman otp chalresp --totp slot key
HOTP を生成します:
$ ykman otp calculate slot
TOTP を生成します:
$ ykman otp calculate --totp slot
ykman otp --help
と https://developers.yubico.com/OATH/ も参照してください。
U2F
YubiKey を用いた Universal 2nd Factor (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは 'FIDO' とも呼ばれていることに注意してください。ykman
ユーティリティを通じていくつかの限定された管理オプションがあります:
- PIN を設定:
$ ykman fido access change-pin
- 個別の資格情報を削除:
$ ykman fido delete <QUERY>
- すべての資格情報と PIN をリセット:
$ ykman fido reset
U2F を認証に使用するには、U2F の指示を見てください。
CCID スマートカード
CCID (Chip Card Interface Device) is a USB standard device class for use by USB devices that act as smart card readers or with security tokens that connect directly via USB, like the YubiKey. HID (Human Interface Device) and CCID are both USB device classes, i.e. they are in the same category of USB specifications. HID is a specification for computer peripherals, like keyboards. The YubiKey works like a USB (HID) keyboard when used in the OTP and FIDO modes, but switches to the CCID protocol when using the PIV application, or as an OpenPGP device.
CCID mode should be enabled by default on all YubiKeys shipped since November 2015 [1]. Enable at least the CCID mode. Please see #Get enabled modes.
PIV
Starting with the YubiKey NEO, the YubiKeys contain a PIV (Personal Identity Verification) application on the chip. PIV is a US government standard (FIPS 201) that specifies how a token using RSA or ECC (Elliptic Curve Cryptography) is used for personal electronic identification. The YubiKey NEO only supports RSA encryption, later models (YubiKey 4 and 5) support both RSA and ECC. The distinguishing characteristic of a PIV token is that it is built to protect private keys and operate on-chip. A private key never leaves the token after it has been installed on it. Optionally, the private key can even be generated on-chip with the aid of an on-chip random number generator. If generated on-chip, the private key is never handled outside of the chip, and there is no way to recover it from the token. When using the PIV mechanism, the YubiKey functions as a CCID device.
OpenPGP スマートカード
The YubiKey can act as a standard GPG smartcard; see the GPG Smartcard section for instructions on how to set up and use it. Yubico also provides some documentation here.
If you do not want to use the other features (U2F and OTP), the button can be configured to insert and eject it, and an auto-eject timeout can be set as well. See #USB connection modes for more.
The default user pin is 123456
and the default admin pin is 12345678
. The default PUK is also 12345678
. Remember to change all 3.
使用例
This section details how to use your YubiKey for various authentication purposes. It is by no means an exhaustive list.
Full disk encryption with LUKS
You have several options:
- Challenge-Response: the response to some challenge is used as a LUKS key. The challenge can act as a password for true 2-factor authentication, or stored in plain-text for one-factor authentication.
- GnuPG: Uses the yubikey's PGP smartcard functionality. Offers strong 2-factor authentication without needing a huge passphrase.
- FIDO HMAC Secret: If your YubiKey supports U2F, it can be configured to return a symmetric secret.
Common prerequisites
- A bootable LUKS encrypted system, using the
encrypt
mkinitcpio hook, with at least one free keyslot.- With the exception of mkinitcpio-ykfdeAUR, the
sd-encrypt
hook is not supported by any of these tools.
- With the exception of mkinitcpio-ykfdeAUR, the
- Backed up LUKS header (Optional, though advisable)
Challenge-response
See yubikey-full-disk-encryption's official documentation for complete instructions. Broadly:
- Install yubikey-full-disk-encryption
- Configure
/etc/ykfde.conf
- Enroll the disk:
# ykfde-enroll -d /dev/<DISK> -s <LUKS_SLOT>
- Add the
ykfde
mkinitcpio hook before theencrypt
hook. - Regenerate the initramfs:
# mkinitcpio -P
There are a few variations available:
- 2FA: default behavior. You must provide the challenge as a password when enrolling the device, and upon boot.
- 1FA: Set
YKFDE_CHALLENGE
inykfde.conf
. Note that this is stored in plaintext. Consider disabling non-root read permissions to this file. - NFC support (Experimental)
- Suspend & Resume support (Experimental) Automatically lock encrypted volumes on suspend, unlock them on resume.
You must regenerate the initramfs for any configuration changes to take effect.
systemd-based initramfs
Users of the sd-encrypt
hook may install mkinitcpio-ykfdeAUR or mkinitcpio-ykfde-gitAUR and follow the instruction in the project documentation. The procedure is broadly similar to yubikey-full-disk-encryption.
GnuPG encrypted keyfile
One tool to accomplish this is initramfs-scencrypt; see its docs for complete instructions. Note that as of October 2020 this package is not in the AUR and is not thoroughly tested, though the GitHub repository offers a PKGBUILD.
The dm-crypt pages offer a few alternatives, though they are mostly links to old forum posts.
HMAC secret extension of FIDO2 protocol
Yet another way of using YubiKey for full disk encryption is to utilize HMAC Secret Extension to retrieve the LUKS password from YubiKey. This can be protected by a passphrase. This functionality requires at least YubiKey 5 with firmware 5.2.3+. For a passphrase protected solution, install khefinAUR and follow instructions available in project documentation. For single factor (optionally PIN-protected) solution and starting with systemd 248, it is possible to use your FIDO2 key as LUKS2 keyslot. Instructions available in the author's blog post.
KeePass
KeePass can be configured for YubiKey support; see the YubiKey section for instructions.
SSH keys
CCID
If your YubiKey supports CCID smartcards, you can use it as a hardware-backed SSH key, either based on GPG or PIV keys. Yubico offers good documentation:
- An overview of both possibilities, giving their advantages and disadvantages
- Instructions for PGP authentication
- Instructions for PIV authentication through user certificates
- Instructions for PIV authentication through #PKCS11
U2F
You may also use the U2F feature of the YubiKey to create hardware-backed SSH keys. See SSH keys#FIDO/U2F for instructions.
PIV
yubikey-agentAUR stores the SSH key as PIV token. See https://github.com/FiloSottile/yubikey-agent#readme for a setup guide.
Linux user authentication with PAM
PAM, and therefore anything which uses PAM for user authentication, can be configured to use a YubiKey as a factor of its user authentication process. This includes sudo, su, ssh, screen lockers, display managers, and nearly every other instance where a Linux system needs to authenticate a user. Its flexible configuration allows you to set whichever authentication requirements fit your needs, for the entire system, a specific application, or for groups of applications. For example, you could accept the YubiKey as an alternative to a password for local sessions, while requiring both for remote sessions. In addition to the Arch Wiki, You are encouraged to read pam(8) and pam.conf(5) to understand how it works and how to configure it.
There are several modules available which integrate YubiKey-supported protocols into PAM:
- pam-u2f - Supports #U2F via the FIDO2 standard. If you are not sure which method to use, this one is a good choice.
- Arch Wiki Instructions
- Yubico's official docs, including a list of supported module parameters.
- Man Pages: pam_u2f(8), pamu2fcfg(1)
- oath-toolkit - Supports #OATH one-time passwords (either HOTP or TOTP)
- yubico-pam - Supports #Yubico OTP and challenge-response OTPs. Note that Yubico OTP mode requires a network connection to a validation server, while challenge-response mode does not.
- Yubico's official docs
- pam_yubico(8) - Take note of the
mode
parameter, used to set challenge-response mode.
PAM configuration is beyond the scope of this article, but for a brief overview:
- Create file(s) containing authorized keys, either in users' home directories or centrally.
- Add a line in the appropriate place in the appropriate PAM configuration file which follows this format:
auth [required|sufficient] [module_name].so [module arguments]
auth required
for multifactor,auth sufficient
for single factor.module_name
- Example:pam_u2f.so
. See a list of installed modules:$ ls /usr/lib/security
- Module configuration arguments are for things like the location of the keyfile, or which method the module should use for authentication.
SSH notes
- Yubico has provided additional guidance. It is written for an old version of Ubuntu, but much of it still applies to an updated Arch system.
- If you are configuring a distant server to use YubiKey, you should open at least one additional, rescue SSH session, so that you are not locked out if the configuration fails.
- Check that
/etc/ssh/sshd_config
contains the following settings. Thesshd_config
shipped with openssh has these set correctly by default.
ChallengeResponseAuthentication no UsePAM yes
Browser/web integration
Many web services are beginning to support FIDO hardware tokens. See the U2F page for more information, but usually the only thing you need to do is to install libfido2 and try it.
ヒントとテクニック
YubiKey デバイスの挿入/除去時にアクションを実行する
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。/etc/udev/rules.d/80-yubikey-actions.rules
を作成し、以下の内容を追加してください:
ACTION=="remove", ENV{ID_VENDOR}=="Yubico", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410", RUN+="/usr/local/bin/script args"
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを "remove" ではなく "add" にしてください。
メンテナンス/アップグレード
YubiKey NEO 用に OATH アプレットをインストールする
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。
NEO を CCID デバイスとして設定する
- yubikey-personalization-gui (yubikey-personalization-gui-gitAUR) をインストール。
- udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。
ykpersonalize -m82
を実行し、y
を入力、エンターを押す。
アプレットをインストールする
- gpshellAUR、gppcscconnectionpluginAUR、globalplatformAUR、pcsclite をインストール。
pcscd.service
を起動。- 最も最近の CAP ファイルを ykneo-oath サイトからダウンロード。
gpinstall.txt
を GitHub からダウンロード。- gpinstall.txt を編集して
install -file
から始まる行を CAP ファイルが置かれているパスに修正。 - ターミナルを開き、
gpshell <location of gpinstall.txt>
を実行。 - 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:
Command --> 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C 010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44 407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100 Wrapped command --> 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C 010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44 407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77 27D0EDA00 Response <-- 009000 Command --> 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000 Wrapped command --> 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00 Response <-- 009000 card_disconnect release_context
- NEO を抜き、Yubico Authenticator アプリで試す。
(任意)Yubico Authenticator デスクトップクライアントをインストールする
yubioath-desktop をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。
pcscd.service
が実行中の間に、yubioath-desktop
を実行して、プロンプトが表示されたら YubiKey を挿入してください。
トラブルシューティング
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。
YubiKey が HID デバイスとして機能しない
この記事で説明されているように、udev ルールを追加してください:
/etc/udev/rules.d/10-security-key.rules
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="users", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0"
その後、udevadm trigger
を実行してください。
ykman が YubiKey に接続できない
マネージャが YubiKey への接続に失敗する場合、pcscd.service
か pcscd.socket
が起動していることを確認してください。
Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions.
これは、scdaemon
がすでにデバイスの排他的な制御を取得している場合に ykman
がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[2]
これを修正するには、~/.gnupg/scdaemon.conf
内であなたのデバイスに対して reader-port
オプションを正しい値で設定することができます。[3]
YubiKey NEO と YubiKey 4 の場合:
reader-port Yubico Yubikey
YubiKey 5 の場合:
reader-port Yubico Yubi
YubiKey がゲスト VM 内でバインドできない
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの dmesg からバスとポートの情報を手に入れる必要があります:
# dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E 's/^\[[^]]+\] usb ([^:]*):.*/\1/'
出力の USB id は X-Y.Z
または X-Y
の形式であるはずです。そして、ホスト上で、find
を使って /sys/bus/usb/drivers
を検索し、YubiKey がバインドしているドライバを探します(例: usbhid
または usbfs
)。
$ find /sys/bus/usb/drivers -name "*X-Y.Z*"
デバイスのバインドを解除するには、先のコマンドの出力を使ってください(つまり、/sys/bus/usb/drivers/<DRIVER>/X-Y.Z:1.0
):
# echo 'X-Y.Z:1.0' > /sys/bus/usb/drivers/<DRIVER>/unbind
Error: [key] could not be locally signed or gpg: No default secret key: No public key
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、Pacman が pacman-key --populate
で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。
YubiKey が Yubico Authenticator で消えたり現れたりする
これは、CCID ドライバがインストールされていない際に起こります。ccid パッケージをインストールする必要があります。
YubiKey core error: timeout
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。