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"
    

    Note

    Резидентните ключове могат по-късно да бъдат изброени и импортирани в друга система с:

    ssh-keygen -K
    
  3. По време на генерирането на ключове може да бъдете помолени да зададете парола **** . Тази парола криптира локалния ключ, съхраняван в ~/.ssh/ (а не частния ключ на Nitrokey, който винаги остава на сигурно място в устройството). Фразата е различна от ПИН кода на устройството по FIDO2. ПИН кодът защитава самия физически ключ, докато паролата защитава вашия локален SSH файл с публичен ключ. Препоръчваме да използвате парола само за защита на нерезидентни ключове.

  4. Когато бъдете попитани за пътя до файла, приемете опцията по подразбиране (~/.ssh/id_ed25519_sk) или изберете потребителско име, например id_ed25519_sk_gitlab.

  5. Ако клавишът Nitrokey мига, потвърдете операцията, като го докоснете.

В крайна сметка ще бъдат създадени следните файлове. Имената на файловете може да се различават, ако сте посочили потребителско име при генерирането на ключа.

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

~/.ssh/id_ed25519_sk.pub → файл с публичен ключ

Изображение0

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 сървъра.