--- # # FIDO2/WebAuthn Hardware Security Keys # # Enables FIDO2 hardware security key authentication (YubiKey, etc.) # Requires OpenSSH 8.2+ on both client and server # # Hardware security keys provide phishing-resistant authentication # and are recommended by: # - NIST SP 800-63B (AAL3) # - CISA Zero Trust guidance # - NSA Cybersecurity Advisory # - name: FIDO2 hardware security keys hosts: admin_workstations become: true roles: - role: welshwandering.openssh_server vars: # Enable FIDO2/WebAuthn security key support openssh_enable_security_keys: true # Disable password authentication (keys only) openssh_password_authentication: false # Accepted key types (prioritize security keys) openssh_pubkey_accepted_key_types: - sk-ssh-ed25519@openssh.com # FIDO2 Ed25519 (preferred) - sk-ecdsa-sha2-nistp256@openssh.com # FIDO2 ECDSA - ssh-ed25519 # Standard Ed25519 (fallback) - rsa-sha2-512 # RSA (fallback) # Host key algorithms openssh_host_key_algorithms: - sk-ssh-ed25519-cert-v01@openssh.com - ssh-ed25519-cert-v01@openssh.com - ssh-ed25519 - rsa-sha2-512 # CA signature algorithms (if using SSH certificates) openssh_ca_signature_algorithms: - sk-ssh-ed25519@openssh.com - ssh-ed25519 - rsa-sha2-512 # Standard security settings openssh_permit_root_login: "prohibit-password" openssh_max_auth_tries: 3 openssh_login_grace_time: "30s" post_tasks: - name: Display FIDO2 setup instructions ansible.builtin.debug: msg: | FIDO2 Hardware Security Keys Enabled Client Setup: 1. Generate a security key credential: ssh-keygen -t ed25519-sk -C "user@host" 2. For keys with PIN protection: ssh-keygen -t ed25519-sk -O verify-required -C "user@host" 3. For keys requiring user presence (touch): ssh-keygen -t ed25519-sk -O resident -C "user@host" 4. Copy public key to server: ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@{{ inventory_hostname }} 5. Test connection: ssh user@{{ inventory_hostname }} (You'll need to touch your security key) Supported Devices: - YubiKey 5 Series - YubiKey Security Key Series - Feitian ePass FIDO - SoloKeys - Any FIDO2/U2F compatible device Requirements: - OpenSSH 8.2+ on both client and server - libfido2 library on client - Physical FIDO2-compatible security key