• Stars
    star
    729
  • Rank 59,799 (Top 2 %)
  • Language
    Python
  • License
    BSD 2-Clause "Sim...
  • Created almost 8 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python library and command line tool for configuring any YubiKey over all USB interfaces.

YubiKey Manager CLI

Build Status

Python 3.7 (or later) library and command line tool for configuring a YubiKey. If youโ€™re looking for the graphical application, itโ€™s here.

Usage

For more usage information and examples, see the YubiKey Manager CLI User Manual.

Usage: ykman [OPTIONS] COMMAND [ARGS]...

  Configure your YubiKey via the command line.

  Examples:

    List connected YubiKeys, only output serial number:
    $ ykman list --serials

    Show information about YubiKey with serial number 0123456:
    $ ykman --device 0123456 info

Options:
  -d, --device SERIAL             specify which YubiKey to interact with by serial number
  -r, --reader NAME               specify a YubiKey by smart card reader name (can't be used with --device or list)
  -l, --log-level [ERROR|WARNING|INFO|DEBUG|TRAFFIC]
                                  enable logging at given verbosity level
  --log-file FILE                 write log to FILE instead of printing to stderr (requires --log-level)
  --diagnose                      show diagnostics information useful for troubleshooting
  -v, --version                   show version information about the app
  --full-help                     show --help output, including hidden commands
  -h, --help                      show this message and exit

Commands:
  info     show general information
  list     list connected YubiKeys
  config   enable or disable applications
  fido     manage the FIDO applications
  oath     manage the OATH application
  openpgp  manage the OpenPGP application
  otp      manage the YubiOTP application
  piv      manage the PIV application

The --help argument can also be used to get detailed information about specific subcommands:

ykman oath --help

Versioning/Compatibility

This project follows Semantic Versioning. Any project depending on yubikey-manager should take care when specifying version ranges to not include any untested major version, as it is likely to have backwards incompatible changes. For example, you should NOT depend on ">=5", as it has no upper bound. Instead, depend on ">=5, <6", as any release before 6 will be compatible.

Note that any private variables (names starting with '_') are not part of the public API, and may be changed between versions at any time.

Installation

YubiKey Manager can be installed independently of platform by using pip (or equivalent):

pip install --user yubikey-manager

On Linux platforms you will need pcscd installed and running to be able to communicate with a YubiKey over the SmartCard interface. Additionally, you may need to set permissions for your user to access YubiKeys via the HID interfaces. More information available here.

Some of the libraries used by yubikey-manager have C-extensions, and may require additional dependencies to build, such as swig and potentially PCSC lite.

Pre-build packages

Pre-built packages specific to your platform may be available from Yubico or third parties. Please refer to your platforms native package manager for detailed instructions on how to install, if available.

Windows

A Windows installer is available to download from the Releases page.

MacOS

A MacOS installer is available to download from the Releases page.

Additionally, packages are available from Homebrew and MacPorts.

Input Monitoring access on MacOS

When running one of the ykman otp commands you may run into an error such as: Failed to open device for communication: -536870174. This indicates a problem with the permission to access the OTP (keyboard) USB interface.

To access a YubiKey over this interface the application needs the Input Monitoring permission. If you are not automatically prompted to grant this permission, you may have to do so manually. Note that it is the terminal you are using that needs the permission, not the ykman executable.

To add your terminal application to the Input Monitoring permission list, go to System Preferences โ†’ Security & Privacy โ†’ Privacy โ†’ Input Monitoring to resolve this.

Linux

Packages are available for several Linux distributions by third party package maintainers. Yubico also provides packages for Ubuntu in the yubico/stable PPA:

$ sudo apt-add-repository ppa:yubico/stable
$ sudo apt update
$ sudo apt install yubikey-manager

FreeBSD

Althought not being officially supported on this platform, YubiKey Manager can be installed on FreeBSD. Itโ€™s available via its ports tree or as pre-built package. Should you opt to install and use YubiKey Manager on this platform, please be aware that itโ€™s NOT maintained by Yubico.

To install the binary package, use pkg install pyXY-yubikey-manager, with pyXY specifying the version of Python the package was built for, so in order to install YubiKey Manager for Python 3.8, use:

# pkg install py38-yubikey-manager

For more information about how to install packages or ports on FreeBSD, please refer to its official documentation: FreeBSD Handbook.

In order to use ykman otp commands, you need to make sure the uhid(4) driver attaches to the USB device:

# usbconfig ugenX.Y add_quirk UQ_KBD_IGNORE
# usbconfig ugenX.Y reset

The correct device to operate on (ugenX.Y) can be determined using usbconfig list.

When using FreeBSD 13 or higher, you can switch to the more modern hidraw(4) driver. This allows YubiKey Manager to access OTP HID in a non-exclusive way, so that the key will still function as a USB keyboard:

# sysrc kld_list+="hidraw hkbd"
# cat >>/boot/loader.conf<<EOF
hw.usb.usbhid.enable="1"
hw.usb.quirk.0="0x1050 0x0010 0 0xffff UQ_KBD_IGNORE"  # YKS_OTP
hw.usb.quirk.1="0x1050 0x0110 0 0xffff UQ_KBD_IGNORE"  # NEO_OTP
hw.usb.quirk.2="0x1050 0x0111 0 0xffff UQ_KBD_IGNORE"  # NEO_OTP_CCID
hw.usb.quirk.3="0x1050 0x0114 0 0xffff UQ_KBD_IGNORE"  # NEO_OTP_FIDO
hw.usb.quirk.4="0x1050 0x0116 0 0xffff UQ_KBD_IGNORE"  # NEO_OTP_FIDO_CCID
hw.usb.quirk.5="0x1050 0x0401 0 0xffff UQ_KBD_IGNORE"  # YK4_OTP
hw.usb.quirk.6="0x1050 0x0403 0 0xffff UQ_KBD_IGNORE"  # YK4_OTP_FIDO
hw.usb.quirk.7="0x1050 0x0405 0 0xffff UQ_KBD_IGNORE"  # YK4_OTP_CCID
hw.usb.quirk.8="0x1050 0x0407 0 0xffff UQ_KBD_IGNORE"  # YK4_OTP_FIDO_CCID
hw.usb.quirk.9="0x1050 0x0410 0 0xffff UQ_KBD_IGNORE"  # YKP_OTP_FIDO
EOF
# reboot

From source (for development)

To install from source, see the development instructions.

Shell completion

Experimental shell completion for the command line tool is available, provided by the underlying CLI library (click) but it is not enabled by default. To enable it, run this command once (for Bash):

$ source <(_YKMAN_COMPLETE=bash_source ykman | sudo tee /etc/bash_completion.d/ykman)

More information on shell completion (including instructions for zch) is available here: https://click.palletsprojects.com/en/8.0.x/shell-completion

More Repositories

1

yubioath-flutter

Yubico Authenticator for Desktop (Windows, macOS and Linux) and Android
Dart
832
star
2

yubico-pam

Yubico Pluggable Authentication Module (PAM)
C
650
star
3

pam-u2f

Pluggable Authentication Module (PAM) for U2F and FIDO2
C
498
star
4

libfido2

Provides library functionality for FIDO2, including communication with a device over USB or NFC.
C
461
star
5

python-fido2

Provides library functionality for FIDO 2.0, including communication with a device over USB.
Python
362
star
6

java-webauthn-server

Server-side Web Authentication library for Java https://www.w3.org/TR/webauthn/#rp-operations
Scala
354
star
7

libu2f-host

Yubico Universal 2nd Factor (U2F) Host C Library
C
321
star
8

php-u2flib-server

(OBSOLETE) U2F library in PHP
PHP
292
star
9

python-u2flib-server

Python based U2F server library
Python
287
star
10

yubikey-personalization

YubiKey Personalization cross-platform library and tool
C
279
star
11

yubico-piv-tool

Command line tool for the YubiKey PIV application
C
255
star
12

yubioath-android

Yubico Authenticator for Android
Kotlin
240
star
13

python-yubico

Python code to talk to YubiKeys
Python
220
star
14

ykneo-openpgp

OpenPGP applet for the YubiKey NEO
Java
214
star
15

yubikey-manager-qt

Cross-platform application for configuring any YubiKey over all USB interfaces.
QML
200
star
16

yubikey-personalization-gui

YubiKey Personalization GUI
C++
183
star
17

yubikit-ios

Yubico Mobile iOS SDK - YubiKit
Objective-C
171
star
18

php-yubico

PHP class for Yubico authentication
PHP
133
star
19

java-u2flib-server

(OBSOLETE) Java server-side library for U2F
Java
130
star
20

yubikey-val

YubiKey OTP validation server in PHP
PHP
130
star
21

libu2f-server

Yubico Universal 2nd Factor (U2F) Server C Library
C
94
star
22

yubico-c

YubiKey C low-level library (libyubikey)
C
92
star
23

yubico-c-client

Yubico C client library
C
87
star
24

Yubico.NET.SDK

A YubiKey SDK for .NET developers
C#
81
star
25

yubikit-android

Yubico Mobile Android SDK - YubiKit
Java
77
star
26

u2fval

Python based U2F Validation Server
Python
75
star
27

yubihsm-shell

yubihsm-shell and libyubihsm
C
73
star
28

python-pyhsm

Python code for YubiHSM
Python
67
star
29

ykneo-oath

OATH App for the YubiKey NEO
Java
63
star
30

yubico-java-client

Client library for verifying YubiKey one-time passwords (OTPs).
Java
62
star
31

yubikey-neo-manager

Cross platform personalization tool for the YubiKey NEO
Python
57
star
32

yubico-windows-auth

YubiKey Logon for windows
C++
56
star
33

yubikey-ksm

YubiKey Key Storage Module
Perl
55
star
34

webauthn-recovery-extension

Asynchronous delegated key generation without shared secrets (DRAFT)
Python
54
star
35

yubico-dotnet-client

Yubico validation protocol 2.0 client
C#
52
star
36

developers.yubico.com

Source code for generating our website
HTML
49
star
37

python-u2flib-host

Python based U2F host library
Python
47
star
38

python-yubihsm

Python
43
star
39

wordpress-u2f

A Wordpress U2F plugin.
PHP
42
star
40

yubiclip-android

YubiKey NEO OTP to clipboard app for Android
Java
41
star
41

yubikey-piv-manager

Tool for configuring your PIV-enabled YubiKey
Python
40
star
42

yubiauth

Authentication backend written in Python
Python
29
star
43

yubix

Yubico reference authentication software stack. This package installs and configures various packages contained in the YubiX stack.
Perl
29
star
44

yubihsm-connector

Go
28
star
45

yubioath-ios

Yubico Authenticator for iOS
Swift
27
star
46

ykneo-curves

Applet for testing ecc curves
Java
25
star
47

android-u2f-demo

U2F demo app for Android using NFC
Java
24
star
48

yubix-vm

Scripts for building a VM image for Yubi-X
Shell
18
star
49

u2fval-client-php

PHP connector library for communicating with a U2FVAL server
PHP
17
star
50

yubico-shibboleth-idp-multifactor-login-handler

Multi-factor Login Handler for Shibboleth IdP.
Java
16
star
51

yubico.github.com

Release artifacts for all projects.
HTML
15
star
52

u2fval-client-python

Python connector library for communicating with a U2FVAL server
Python
14
star
53

yubico-j

Low-level library for decrypting and parsing Yubikey One-Time Passwords (OTP), written in Java.
Java
14
star
54

yubikey-neo-demo

Android demo application for uses of the YubiKey NEO
Java
14
star
55

python-yubicommon

Common utility modules shared between various Python based Yubico projects.
Python
13
star
56

yubico-bitcoin-java

Java client library for communicating with the ykneo-bitcoin applet for the YubiKey NEO
Java
13
star
57

yubitotp-android

Android application for TOTP with YubiKey NEO
Java
13
star
58

yubico-dbus-notifier

Get D-Bus notifications when a YubiKey is inserted/removed
Python
12
star
59

libykneomgr

YubiKey NEO CCID Manager C Library
C
11
star
60

yubiadmin

Web based administration tool for Yubico software components including YK-VAL, YK-KSM and rlm_yubikey
Python
11
star
61

yubico-perl-client

AnyEvent based Perl extension for validating YubiKey OTPs against the Yubico Validation Protocol version 2.0
Perl
11
star
62

ifd-yubico

Yubico OS X libccid patcher
Python
10
star
63

yubikey-personalization-gui-dpkg

Debian packaging of yubico-personalization-gui
C++
8
star
64

yubihsmrs

rust wrapper for libyubihsm
Rust
8
star
65

yubico-pam-dpkg

Debian packaging of yubico-pam
Shell
7
star
66

rlm-yubico

FreeRADIUS module for using YubiKeys for authentication
Perl
7
star
67

yubikey-neo-manager-dpkg

Debian packaging for yubikey-neo-manager
Python
7
star
68

yubikey-salesforce-client

Apex classes for validating YubiKey one-time passwords
Apex
7
star
69

yubico-piv-tool-dpkg

Moved to https://salsa.debian.org/auth-team/yubico-piv-tool
C
7
star
70

yubikey-personalization-dpkg

Debian package of yubikey-personalization
C
6
star
71

yubioath-desktop-dpkg

Debian package for yubioath-desktop.
Python
6
star
72

yubico-bitcoin-python

Python client library and command line tool for communicating with the ykneo-bitcoin applet for the YubiKey NEO
Python
6
star
73

gradle-gpg-signing-plugin

GnuPG signing backend for Gradle's Signing plugin
Java
5
star
74

python-yubico-dpkg

Debian packaging of python-yubico
Python
5
star
75

python-yubico-client-dpkg

Debian package for python-yubico-client.
Python
5
star
76

python-pyhsm-dpkg

Debian packaging of python-pyhsm
Python
4
star
77

yubihsm-setup

Rust
4
star
78

libu2f-server-dpkg

Debian packaging for libu2f-server
Shell
4
star
79

ykneo-ccid-tools

YubiKey NEO CCID Tools
Objective-C
4
star
80

yubico-c-dpkg

Debian packaging of the Yubico C library (libyubikey)
Shell
4
star
81

yubikit-swift

Yubico Swift SDK - YubiKit
Swift
4
star
82

pam-u2f-dpkg

Debian packaging for pam-u2f
Shell
3
star
83

php-yubico-dpkg

Debian packaging of php-yubico
PHP
3
star
84

yubikey-piv-manager-dpkg

Debian packaging for yubikey-piv-manager
Python
3
star
85

webauthn-sign-kem-extensions

DRAFT: WebAuthn extension(s) for arbitrary signing and key encapsulation
3
star
86

yubico-c-client-dpkg

Debian package of Yubico C Client
Shell
2
star
87

libu2f-host-dpkg

debian packaging of libu2f-host
Shell
2
star
88

yubikey-ksm-dpkg

Debian package of YubiKey KSM project
Perl
2
star
89

yubiauth-dpkg

Debian package of the YubiAuth project
Python
2
star
90

yubikey-val-dpkg

Debian package of YubiKey VAL project
PHP
2
star
91

globalplatform-dpkg

Debian packaging for globalplatform
C
2
star
92

libykneomgr-dpkg

Debian packaging of libykneomgr
Shell
2
star
93

rlm-yubico-dpkg

Debian package of rlm-yubico
Perl
2
star
94

gpshell-dpkg

Debian packaging for gpshell
C
2
star
95

yubiadmin-dpkg

Debian package for yubiadmin
Python
2
star
96

gppcscconnectionplugin-dpkg

Debian packaging for gppcscconnectionplugin
Shell
2
star
97

arkg-rfc

Internet-Draft: The Asynchronous Remote Key Generation (ARKG) algorithm
Makefile
2
star
98

yubico-perl-client-dpkg

Debian packaging for yubico-perl-client
Perl
2
star