SSH Authentication with FIDO2¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
⨯ inactive |
SSH (Secure Shell) is a network protocol used to securely access and manage remote systems such as servers or code repositories. It uses cryptographic key pairs for authentication, allowing passwordless logins with strong security.
With a Nitrokey, the private SSH key is generated and stored directly on the device, so it never leaves the hardware. Each login requires you to touch the Nitrokey, adding a simple physical confirmation that protects against unauthorized access. For example, when connecting to a server, GitLab, or GitHub.
Non-Discoverable Credentials¶
O acreditare nedescoperibilă este tipul implicit de acreditare creat atunci când utilizatorul își înregistrează Nitrokey la un sistem de autentificare care acceptă Nitrokey FIDO2/WebAuthn. Sistemul de autentificare stochează mânerul cheii, în timp ce cheia privată rămâne în siguranță în interiorul Nitrokey. Această configurație nu utilizează spațiu de stocare pe Nitrokey și depinde de sistemul de autentificare pentru a furniza mânerul cheii în timpul autentificării. PIN-ul Nitrokey FIDO2 controlează accesul la Nitrokey și autorizează toate operațiunile care implică chei private.
Discoverable Credentials¶
O acreditare descoperibilă este stocată direct pe Nitrokey, incluzând toate informațiile și metadatele necesare pentru autentificare. Acest lucru permite găsirea automată a acreditării de către sistemul de autentificare, fără a furniza o cheie externă și permite autentificarea fără nume de utilizator. Credențialele care pot fi descoperite sunt protejate de PIN-ul FIDO2, care autorizează utilizarea lor și garantează că numai utilizatorul autorizat le poate accesa. Fiecare acreditare ocupă de obicei câteva sute de octeți de stocare securizată. Numărul total de acreditări depinde de modelul Nitrokey și de versiunea de firmware, de obicei între 25 și 100 de intrări.
Generating SSH Key¶
Insert the Nitrokey into your computer.
Open a terminal and create your SSH key. Replace
"your_comment"with a label to identify it (e.g., „Nitrokey GitLab”). By default, the key is created as a non-discoverable credential. In this case, a local key handle is stored in ~/.ssh/ while the private key remains on the Nitrokey. This means the key is tied to the system where it was generated, since the local key handle file is required for authentication. Use the -O resident option to create a discoverable credential. In this case, the credential is stored on the Nitrokey, making it portable and usable across different systems without copying any local files.Non-discoverable credential:
ssh-keygen -t ed25519-sk -C "your_comment"Discoverable credential:
ssh-keygen -t ed25519-sk -O resident -C "your_comment"Notă
Discoverable credentials can later be listed and imported on another system with:
ssh-keygen -KDuring key generation, you may also be asked to set a passphrase. This passphrase encrypts the local key handle stored in
~/.ssh/(not the private key on the Nitrokey, which always stays securely inside the device). The passphrase is different from the FIDO2 device PIN. The PIN protects the physical key itself, while the passphrase protects your local SSH public key file. We recommend to use a passphrase to protect non-discoverable keys only.Atunci când vi se solicită o cale de acces pentru fișier, acceptați opțiunea implicită (
~/.ssh/id_ed25519_sk) sau alegeți un nume personalizat, precumid_ed25519_sk_gitlab.Dacă Nitrokey clipește, confirmați operațiunea atingând-o.
În cele din urmă, vor fi create următoarele fișiere. Numele fișierelor pot diferi dacă ați specificat un nume personalizat la generarea cheii.
~/.ssh/id_ed25519_sk→ mâner pentru cheia privată (stocată în siguranță pe Nitrokey)~/.ssh/id_ed25519_sk.pub→ fișier cheie publică
Adding Your Public Key¶
Odată ce perechea de chei SSH este generată, cheia publică trebuie adăugată la serviciul sau serverul pe care doriți să îl accesați.
Display your public key:
cat ~/.ssh/id_ed25519_sk.pubExemplu de ieșire (nu utilizați această tastă):
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
Copiați rezultatul și adăugați-l la setările cheii SSH a contului dvs.
See GitLab or GitHub for detailed steps.
Pentru a activa accesul la serverul SSH de la distanță, adăugați cheia dvs. publică la fișierul
~/.ssh/authorized_keysal contului dvs. de utilizator de pe serverul SSH.