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¶
Ένα μη ανιχνεύσιμο διαπιστευτήριο είναι ο προεπιλεγμένος τύπος διαπιστευτηρίου που δημιουργείται όταν ο χρήστης καταχωρίζει το Nitrokey του σε ένα σύστημα ελέγχου ταυτότητας που υποστηρίζει FIDO2/WebAuthn. Το σύστημα ελέγχου ταυτότητας αποθηκεύει τη λαβή του κλειδιού, ενώ το ιδιωτικό κλειδί παραμένει με ασφάλεια μέσα στο Nitrokey. Αυτή η διαμόρφωση δεν χρησιμοποιεί αποθηκευτικό χώρο στο Nitrokey και εξαρτάται από το σύστημα ελέγχου ταυτότητας για την παροχή της λαβής κλειδιού κατά τη διάρκεια της σύνδεσης. Το FIDO2 PIN ελέγχει την πρόσβαση στο Nitrokey και εξουσιοδοτεί όλες τις λειτουργίες που αφορούν ιδιωτικά κλειδιά.
Discoverable Credentials¶
Ένα διαπιστευτήριο με δυνατότητα εντοπισμού αποθηκεύεται απευθείας στο Nitrokey, συμπεριλαμβανομένων όλων των πληροφοριών διαπιστευτηρίου και των μεταδεδομένων που απαιτούνται για τον έλεγχο ταυτότητας. Αυτό επιτρέπει την αυτόματη εύρεση του διαπιστευτηρίου από το σύστημα ελέγχου ταυτότητας χωρίς την παροχή εξωτερικής λαβής κλειδιού και επιτρέπει τον έλεγχο ταυτότητας χωρίς όνομα χρήστη. Τα διαπιστευτήρια που μπορούν να εντοπιστούν προστατεύονται από το PIN FIDO2, το οποίο εξουσιοδοτεί τη χρήση τους και διασφαλίζει ότι μόνο ο εξουσιοδοτημένος χρήστης μπορεί να έχει πρόσβαση σε αυτά. Κάθε διαπιστευτήριο καταλαμβάνει συνήθως μερικές εκατοντάδες bytes ασφαλούς αποθήκευσης. Ο συνολικός αριθμός διαπιστευτηρίων εξαρτάται από το μοντέλο Nitrokey και την έκδοση υλικολογισμικού, συνήθως μεταξύ 25 και 100 καταχωρίσεων.
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"Σημείωση
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.Όταν σας ζητείται η διαδρομή του αρχείου, αποδεχτείτε την προεπιλεγμένη επιλογή (
~/.ssh/id_ed25519_sk) ή επιλέξτε ένα προσαρμοσμένο όνομα όπωςid_ed25519_sk_gitlab.Εάν το Nitrokey αναβοσβήνει, επιβεβαιώστε τη λειτουργία αγγίζοντάς το.
Τελικά θα δημιουργηθούν τα ακόλουθα αρχεία. Τα ονόματα των αρχείων ενδέχεται να διαφέρουν, εάν έχετε καθορίσει ένα προσαρμοσμένο όνομα κατά τη δημιουργία του κλειδιού.
~/.ssh/id_ed25519_sk→ λαβή για το ιδιωτικό κλειδί (αποθηκεύεται με ασφάλεια στο Nitrokey)~/.ssh/id_ed25519_sk.pub→ αρχείο δημόσιου κλειδιού
Adding Your Public Key¶
Μόλις δημιουργηθεί το ζεύγος κλειδιών SSH, το δημόσιο κλειδί πρέπει να προστεθεί στην υπηρεσία ή το διακομιστή στον οποίο θέλετε να αποκτήσετε πρόσβαση.
Display your public key:
cat ~/.ssh/id_ed25519_sk.pubΠαράδειγμα εξόδου (μην χρησιμοποιείτε αυτό το πλήκτρο):
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
Αντιγράψτε το αποτέλεσμα και προσθέστε το στις ρυθμίσεις κλειδιού SSH του λογαριασμού σας.
See GitLab or GitHub for detailed steps.
Για να ενεργοποιήσετε την απομακρυσμένη πρόσβαση στον διακομιστή SSH, προσθέστε το δημόσιο κλειδί σας στο αρχείο
~/.ssh/authorized_keysτου λογαριασμού χρήστη σας στον διακομιστή SSH.