Ο απόλυτος οδηγός για 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στο περιεχόμενο της καρδιάς σας!