SSH Authentication with FIDO2

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

inactive

SSH (Secure Shell) - это сетевой протокол, используемый для безопасного доступа и управления удаленными системами, такими как серверы или репозитории кода (например, GitLab, GitHub). Он использует пары криптографических ключей для аутентификации, позволяя осуществлять вход без пароля и обеспечивая надежную защиту. При использовании Nitrokey закрытый SSH-ключ генерируется и хранится непосредственно на устройстве, поэтому он никогда не покидает его. При каждом входе в систему необходимо прикоснуться к Nitrokey, что является простым физическим подтверждением, защищающим от несанкционированного доступа.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Откройте терминал и создайте свой SSH-ключ. Замените "your_comment" меткой для его идентификации (например, «Nitrokey GitLab»). По умолчанию ключ является нерезидентным, то есть локальный ключ-ручка хранится в ~/.ssh/, а закрытый ключ остается в безопасности на Nitrokey. Используйте опцию -O resident, если вы хотите, чтобы ключ был переносимым между системами.

    ssh-keygen -t ed25519-sk -C "your_comment"
    

    или создать резидентный ключ

    ssh-keygen -t ed25519-sk -O resident -C "your_comment"
    

    Примечание

    Резидентные ключи могут быть позже перечислены и импортированы в другую систему с помощью:

    ssh-keygen -K
    
  3. Во время генерации ключа вам также может быть предложено задать парольную фразу **** . Эта фраза шифрует локальный ключ-ручку, хранящийся в ~/.ssh/ (не закрытый ключ Nitrokey, который всегда остается в устройстве). Парольная фраза отличается от PIN-кода устройства FIDO2. PIN-код защищает сам физический ключ, а кодовая фраза - ваш локальный файл открытого ключа SSH. Мы рекомендуем использовать кодовую фразу только для защиты нерезидентных ключей.

  4. Когда вас попросят указать путь к файлу, примите вариант по умолчанию (~/.ssh/id_ed25519_sk) или выберите собственное имя, например id_ed25519_sk_gitlab.

  5. Если Nitrokey мигает, подтвердите операцию, коснувшись его.

В конечном итоге будут созданы следующие файлы. Имена файлов могут отличаться, если при генерации ключа вы указали пользовательское имя.

~/.ssh/id_ed25519_sk → ключ к закрытому ключу (надежно хранится на Nitrokey)

~/.ssh/id_ed25519_sk.pub → файл открытого ключа

img0

Adding Your Public Key

После создания пары ключей SSH открытый ключ необходимо добавить к службе или серверу, к которому вы хотите получить доступ.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Пример вывода (не используйте этот ключ):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Скопируйте полученный результат и добавьте его в настройки SSH-ключа вашей учетной записи. Подробные шаги описаны в GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> или GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account>. Чтобы включить удаленный доступ к серверу по SSH, добавьте свой открытый ключ в файл ~/.ssh/authorized_keys вашей учетной записи пользователя на SSH-сервере.