Ο απόλυτος οδηγός για SSH - Ρύθμιση κλειδιών SSH
Καλώς ορίσατε στον απόλυτο οδηγό μας για τη ρύθμιση των κλειδιών SSH (Secure Shell). Αυτό το σεμινάριο θα σας καθοδηγήσει στα βασικά στοιχεία της δημιουργίας κλειδιών SSH, καθώς και στον τρόπο διαχείρισης πολλαπλών κλειδιών και ζευγών κλειδιών.
Δημιουργήστε ένα νέο ζεύγος κλειδιών SSH
Ανοίξτε ένα τερματικό και εκτελέστε την ακόλουθη εντολή:
ssh-keygen
Θα δείτε το ακόλουθο κείμενο:
Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):
Πατήστε Enter για να αποθηκεύσετε τα κλειδιά σας στον προεπιλεγμένο /home/username/.ssh
κατάλογο.
Στη συνέχεια, θα σας ζητηθεί να εισαγάγετε έναν κωδικό πρόσβασης:
Enter passphrase (empty for no passphrase):
Συνιστάται να εισαγάγετε έναν κωδικό πρόσβασης εδώ για ένα επιπλέον επίπεδο ασφάλειας. Ορίζοντας έναν κωδικό πρόσβασης, θα μπορούσατε να αποτρέψετε τη μη εξουσιοδοτημένη πρόσβαση στους διακομιστές και τους λογαριασμούς σας, εάν κάποιος πάρει ποτέ το ιδιωτικό κλειδί SSH ή το μηχάνημά σας.
Αφού εισαγάγετε και επιβεβαιώσετε τον κωδικό πρόσβασής σας, θα δείτε τα εξής:
Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 [email protected] The key's randomart image is: +---[RSA 2048]----+ | .o=+.... | |+.*o+o . | |+X.=o o | |@.=.oo . | |=O ...o S | |o.oo . . | |.E+ . . . . | |oo . ... + | |=.. .o. . . | +----[SHA256]-----+
Έχετε πλέον ένα δημόσιο και ιδιωτικό ζεύγος κλειδιών SSH που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε πρόσβαση σε απομακρυσμένους διακομιστές και να χειριστείτε τον έλεγχο ταυτότητας για προγράμματα γραμμής εντολών όπως το Git.
Διαχείριση πολλαπλών κλειδιών SSH
Αν και θεωρείται καλή πρακτική να έχετε μόνο ένα ζεύγος δημόσιου-ιδιωτικού κλειδιού ανά συσκευή, μερικές φορές πρέπει να χρησιμοποιήσετε πολλά κλειδιά ή έχετε ανορθόδοξα ονόματα κλειδιών. Για παράδειγμα, μπορεί να χρησιμοποιείτε ένα ζεύγος κλειδιών SSH για να εργαστείτε στα εσωτερικά έργα της εταιρείας σας, αλλά μπορεί να χρησιμοποιείτε διαφορετικό κλειδί για την πρόσβαση στους διακομιστές ενός πελάτη. Επιπλέον, μπορεί να χρησιμοποιείτε ένα διαφορετικό ζεύγος κλειδιών για πρόσβαση στον δικό σας ιδιωτικό διακομιστή.
Η διαχείριση των κλειδιών SSH μπορεί να γίνει δυσκίνητη μόλις χρειαστεί να χρησιμοποιήσετε ένα δεύτερο κλειδί. Παραδοσιακά, θα χρησιμοποιούσατε ssh-add
για να αποθηκεύσετε τα κλειδιά σας ssh-agent
, πληκτρολογώντας τον κωδικό πρόσβασης για κάθε κλειδί. Το πρόβλημα είναι ότι θα πρέπει να το κάνετε αυτό κάθε φορά που κάνετε επανεκκίνηση του υπολογιστή σας, ο οποίος μπορεί γρήγορα να γίνει κουραστικός.
Μια καλύτερη λύση είναι να αυτοματοποιήσετε την προσθήκη κλειδιών, να αποθηκεύσετε κωδικούς πρόσβασης και να καθορίσετε ποιο κλειδί θα χρησιμοποιήσετε κατά την πρόσβαση σε συγκεκριμένους διακομιστές.
SSH config
Εισαγάγετε SSH config
, το οποίο είναι ένα αρχείο διαμόρφωσης ανά χρήστη για επικοινωνία SSH. Δημιουργήστε ένα νέο αρχείο: ~/.ssh/config
και ανοίξτε το για επεξεργασία:
nano ~/.ssh/config
Διαχείριση κλειδιού SSH με προσαρμοσμένο όνομα
Το πρώτο πράγμα που πρόκειται να λύσουμε με τη χρήση αυτού του config
αρχείου είναι να αποφύγουμε την προσθήκη προσαρμοσμένων κλειδιών SSH χρησιμοποιώντας ssh-add
. Ας υποθέσουμε ότι το ιδιωτικό κλειδί SSH ονομάζεται ~/.ssh/id_rsa
, προσθέστε τα ακόλουθα στο config
αρχείο:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes
Στη συνέχεια, βεβαιωθείτε ότι ~/.ssh/id_rsa
δεν υπάρχει ssh-agent
, ανοίγοντας άλλο τερματικό και εκτελέστε την ακόλουθη εντολή:
ssh-add -D
Αυτή η εντολή θα αφαιρέσει όλα τα κλειδιά από την τρέχουσα ενεργή ssh-agent
περίοδο λειτουργίας.
Τώρα, αν προσπαθήσετε να κλείσετε ένα αποθετήριο GitHub, το config
αρχείο σας θα χρησιμοποιήσει το κλειδί στο ~/.ssh/ida_rsa
.
Ακολουθούν ορισμένα άλλα χρήσιμα παραδείγματα διαμόρφωσης:
Host bitbucket-corporate HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_corp IdentitiesOnly yes
Τώρα μπορείτε να χρησιμοποιήσετε git clone [email protected]:company/project.git
Host bitbucket-personal HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes
Τώρα μπορείτε να χρησιμοποιήσετε git clone [email protected]:username/other-pi-project.git
Host myserver HostName ssh.username.com Port 1111 IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes User username IdentitiesOnly yes
Τώρα μπορείτε να κάνετε SSH στον διακομιστή σας χρησιμοποιώντας ssh myserver
. Δεν χρειάζεται πλέον να εισάγετε μια θύρα και ένα όνομα χρήστη κάθε φορά που SSH στον ιδιωτικό σας διακομιστή.
Διαχείριση κωδικού πρόσβασης
Το τελευταίο κομμάτι του παζλ είναι η διαχείριση κωδικών πρόσβασης. Μπορεί να είναι πολύ κουραστικό να εισάγετε έναν κωδικό πρόσβασης κάθε φορά που ξεκινάτε μια σύνδεση SSH. Για να το ξεπεράσουμε αυτό, μπορούμε να χρησιμοποιήσουμε το λογισμικό διαχείρισης κωδικών πρόσβασης που συνοδεύει macOS και διάφορες διανομές Linux.
Για αυτό το σεμινάριο θα χρησιμοποιήσουμε το πρόγραμμα Keychain Access του macOS. Ξεκινήστε προσθέτοντας το κλειδί σας στην Keychain Access μεταβιβάζοντας την -K
επιλογή στην ssh-add
εντολή:
ssh-add -K ~/.ssh/id_rsa_whatever
Τώρα μπορείτε να δείτε το κλειδί SSH στο Keychain Access:

Αλλά εάν αφαιρέσετε τα κλειδιά από ή ssh-agent
με την ssh-add -D
επανεκκίνηση του υπολογιστή σας, θα σας ζητηθεί ξανά κωδικός πρόσβασης όταν προσπαθείτε να χρησιμοποιήσετε SSH. Αποδεικνύεται ότι υπάρχει ένα ακόμη στεφάνι για να περάσετε. Ανοίξτε το config
αρχείο SSH εκτελώντας nano ~/.ssh/config
και προσθέστε τα εξής:
Host * AddKeysToAgent yes UseKeychain yes
Με αυτό, όποτε εκτελείτε ssh
θα αναζητά κλειδιά στην Keychain Access. Εάν βρει έναν, δεν θα σας ζητηθεί πλέον κωδικός πρόσβασης. Τα πλήκτρα θα προστίθενται επίσης αυτόματα σε ssh-agent
κάθε επανεκκίνηση του μηχανήματός σας.
Τώρα που γνωρίζετε τα βασικά στοιχεία της δημιουργίας νέων κλειδιών SSH και της διαχείρισης πολλαπλών κλειδιών, πηγαίνετε ssh
στο περιεχόμενο της καρδιάς σας!