Πολλές φορές είτε σαν developer, είτε σαν devops είτε σαν πατροπαράδοτος sysadmin ή συνδυασμός των παραπάνω θα χρειαστείτε να διαχειρίζεστε πολλούς server.
Αλλά κάθε server ίσως να έχετε πολλαπλά κλειδιά είτε επειδή δημιουργήσατε στο AMAZON AWS αρκετά .pem κλειδιά και ο χρόνος να σετάρεις ένα σύστημα deployment κλειδιών δεν βολεύει χρονικά. Είτε επειδή απλά ο άλλος στο έδωσε copy-paste το κλειδί (ενώ δεν θα έπρεπε), είτε επειδή θέλετε να έχετε διαφορετικό κλειδί για το github και διαφορετικό για τον server (you know για να χωρίζεις την διασκέδαση από την εργασία)
Όμως τελικά πως διαχειρίζεστε τόσα κλειδιά?
Βασικός τρόπος Διαχείρισης Κλειδιών
Γι αυτό υπάρχει ο φάκελος .ssh
στον /home folder σας όπου αποτελεί ένα καλό σημείο να αποθηκεύετε τα ssh κλειδιά. Συνήθως είτε είναι ένα αρχείο σε μορφή .pem ή 2 αρχεία ένα ζεύγος αρχείων που το ένα είναι σε μορφή .pub και και συνοδεύετε από το ιδιωτικό κλειδί που είναι ένα αρχείο χωρίς κατάληξη.
Εφόσον βάλετε τα κλειδιά εκεί τρέχετε την εντολή:
chmod 400 ~/.ssh/^το_κλειδί_σας^
Όπου ^το_κλειδί_σας^
αποτελεί είτε το κλειδί σε μορφή .pem ή το δημόσιο σας κλειδί που συνήθως είναι σε μορφή .pub ή το ιδιωτικό σας κλειδί το οποίο συνήθως δεν έχει κατάληξη. Σε περίπτωση που διαθέτετε ένα ζευγάρι δημοσίου - ιδιωτικού κλειδιού παρακαλώ τρέξτε την εντολή και στα 2 κλειδιά.
Μετέπειτα δημιουργείτε ένα αρχείο ~/.ssh/config
που μπορείτε να ορίσετε εγγραφές με την ακόλουθη μορφή:
Host ^μνημονικό_όνομα^
Hostname ^url_η_ip_server^
IdentityFile ^όνομα_δημοσίου_κλειδιού_η_όνομα_pem_κλειδιού^
Port ^θύρα_που_ακούει_ο_ssh_server^
user ^username^
Όπου:
-
^μνημονικό_όνομα^
ένα όνομα το οποίο μπορείτε να χρησιμοποιείτε σαν alias πχ. webserver.production -
^url_η_ip_server^
H διεύθυνση του server -
^όνομα_δημοσίου_κλειδιού_η_όνομα_pem_κλειδιού^
Έαν έχετε ένα αρχείο *.pem ορίζετε την διαδρομή αυτού ειδάλλως ορίζετε την διαδρομή του δημοσίου κλειδιού. -
^username^
Το όνομα χρήστη. -
^θύρα_που_ακούει_ο_ssh_server^
Το port στον οποίο ο server δέχεται συνδέσεις. Εάν είναι η θύρα 22 τότε μπορείτε να παραλείψετε αυτήν την γραμμή τελείως.
Έτσι πλέον αντί για:
ssh ^username^@^url_η_ip_server^ -P ^θύρα_που_ακούει_ο_ssh_server^
Μπορείτε απλά να κάνετε:
ssh ^μνημονικό_όνομα^
Προχωρημένες ρυθμίσεις και τρόπος οργάνωσης κλειδιών εργασίας
Όμως σε περίπτωση που έχετε πολλαπλούς πελάτες ή θέλετε να έχετε συμμαζεμένα τα αρχεία και τα configuration που χρησιμοποιείτε για διασκέδαση και τα configuration για εργασία.
Τότε τι κάνετε;
Προσωπικά για να κρατώ τα αρχεία της εργασίας μου ειδικά τώρα που εργάζομαι από μακρόθεν έχω ένα φάκελο ~/job
εκεί έχω κάνει ένα φάκελο ssh που τοποθετώ τα ssh configuration αλλά και τα κλειδιά (εργάζομαι σε μια εταιρεία που δεν έχει πολλαπλούς πελάτες).
Εφόσον τοποθετήσω όποια κλειδιά και ένα αρχείο κειμένου με το όνομα config (με την σύνταξη που έχει το ~/.ssh/config
αρχείο) εκτελώ την εντολή:
chmod 400 ~/ssh/*
chmod +w ~/ssh/config
Μετέπειτα προσθέτω την ακόλουθη εγγραφή στην αρχή του αρχείου ~/.ssh/config
(για να κανω edit εύκολα το αρχείο σε περίπτωση που αλλάξω εργασία):
Include /home/pcmagas/job/ssh/config
Αντί για /home/pcmagas/job/ssh/config
ορίστε μια άλλη διαδρομή αρχείου. Τέλος, όποια διαδρομή κλειδιών αφορούν την εργασία μου τη μισθωτή το βάζω στον φάκελο /home/pcmagas/job/ssh
και κάνω chown με permissions 400
ώστε να μην επιτρέπετε η εγγραφή από κανέναν.
Εσείς μπορείτε να έχετε παρόμοια λογική πχ. φάκελο ανά πελάτη (πχ. εάν εργάζεστε σε software house και έχετε συγκεκριμένους πελάτες ανά server) καλή ιδέα είναι να κάνετε έναν φάκελο ssh και να τοποθετείτε τα κλειδιά όπως και τις ρυθμίσεις εκεί. Μετά απλά τοποθετείτε μια Include έγγραφή στο ~/.ssh/config
κατά προσωπική προτίμηση στην αρχή του αρχείου.
Και έχετε ένα εύκολο μνημονικό όνομα για κάθε server.