Уже наверное полгода у меня есть YubiKey 5C NFC. Пользуюсь им как аппаратным ключом и для получения OTP паролей, и только сейчас дошли руки разобраться что там по работе с SSH.

А все оказалось достаточно просто. Вот эта команда позволяет сгенерировать SSH ключ, который будет связан с ключом, который существует внутри YubiKey:

⚠️
Для работы такого ключа нужен OpenSSH версии 8.2 и выше как на сервере, так и на вашем ПК
Из-за этого ограничения пришлось обновить сервера с RHEL 8 на RHEL 9
ssh-keygen -t ed25519-sk -O resident -f ~/.ssh/key_name -O verify-required

Все как с обычными ключами, у вас появится 2 файла в папке ssh key_name и key_name.pub. Только вот, воспользоваться секретным ключем без подключения YubiKey не выйдет, также нужно будет ввести пароль от YubiKey и коснуться его.

Если каждый раз вводить пароль от YubiKey не хочется, то удалите параметр -O verify-required. Тогда нужно будет только касаться ключа.

В интернете полно гайдов, как использовать GPG агент вместо SSH, когда у вас вместо ssh ключа будут ключи gpg. Но эти настройки выглядит как костыли.

GitHub и GitLab

Такой ключ подойдет и для доступа к репозиториям. Но необходимо будет прописать в ~/.ssh/config информацию о том, какой ключ использовать:

Host github.com
    Hostname github.com
    IdentityFile ~/.ssh/github
    IdentitiesOnly yes

Дополнительный материал

Оставлю тут доклад, который описывает все возможности YubiKey