Αυτό το άρθρο συγκεντρώνει τις βέλτιστες πρακτικές μας για την πιο αποτελεσματική χρήση του SSH. Σε αυτό, θα μάθετε πώς να:
- Προσθέστε έναν δεύτερο παράγοντα στη σύνδεση SSH
- Ασφαλής προώθηση πρακτόρων
- Έξοδος από την κολλημένη συνεδρία SSH
- Διατήρηση ανοιχτού μόνιμου τερματικού
- Μοιραστείτε μια συνεδρία απομακρυσμένου τερματικού με έναν φίλο (όχι Zoom!)
Προσθήκη ενός δεύτερου παράγοντα στο SSH σας
Υπάρχουν πέντε διαφορετικοί τρόποι για να προσθέσετε έναν δεύτερο παράγοντα ελέγχου ταυτότητας στις συνδέσεις SSH σας:
- Ενημερώστε το OpenSSH σας και χρησιμοποιήστε ένα κλειδί κρυπτογράφησης. Τον Φεβρουάριο του 2020, το OpenSSH πρόσθεσε υποστήριξη για κλειδιά κρυπτογράφησης FIDO U2F (Universal Second Factor). Αυτή είναι μια εξαιρετική νέα λειτουργία, αλλά υπάρχει μια παγίδα: μόνο οι υπολογιστές-πελάτες και οι διακομιστές που έχουν ενημερωθεί σε OpenSSH 8.2 ή νεότερη έκδοση θα μπορούν να χρησιμοποιούν κλειδιά κρυπτογράφησης, καθώς η ενημέρωση του Φεβρουαρίου εισάγει νέους τύπους κλειδιών για αυτά. Η εντολή
ssh –VΜπορείτε να ελέγξετε την έκδοση πελάτη του SSH και την έκδοση διακομιστή με την εντολήnc [servername] 22
Η έκδοση του Φεβρουαρίου πρόσθεσε δύο νέους τύπους κλειδιών — ecdsa-sk και ed25519-sk (μαζί με τα αντίστοιχα πιστοποιητικά). Για να δημιουργήσετε ένα αρχείο κλειδιού, απλώς εισαγάγετε το κλειδί κρυπτογράφησης και εκτελέστε την εντολή:$ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_skΘα δημιουργήσει ένα δημόσιο και ένα ιδιωτικό κλειδί και θα τα συνδέσει με τη συσκευή U2F σας. Ο σκοπός του ιδιωτικού κλειδιού στη συσκευή U2F είναι να αποκρυπτογραφήσει την περιγραφή του ιδιωτικού κλειδιού στον δίσκο όταν ενεργοποιηθεί το κλειδί κρυπτογράφησης.
Επιπλέον, μπορείτε να δώσετε μια φράση πρόσβασης για τα κλειδιά σας ως δευτερεύοντα παράγοντα.
Ένα κλειδί resident είναι ένας άλλος υποστηριζόμενος τύπος δημιουργίας κλειδιού -sk στο OpenSSH. Αυτή η προσέγγιση αποθηκεύει τον περιγραφέα στη συσκευή U2F και σας επιτρέπει να τον έχετε μαζί με το κλειδί κρυπτογράφησης όταν χρειάζεται. Μπορείτε να δημιουργήσετε ένα κλειδί resident με την εντολή:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_skΣτη συνέχεια, για να επιστρέψετε τον περιγραφέα πίσω στη μνήμη της νέας συσκευής, εισαγάγετε το κλειδί κρυπτογράφησης και εκτελέστε την εντολή:
$ ssh-add -KΌταν συνδέεστε σε έναν κεντρικό υπολογιστή, θα χρειαστεί να ενεργοποιήσετε το κλειδί κρυπτογράφησης.
- Χρησιμοποιήστε PIV+PKCS11 και Yubikey. Η σύνδεση σε συσκευές με παλαιότερες εκδόσεις SSHD χρησιμοποιώντας κλειδί κρυπτογράφησης απαιτεί διαφορετική προσέγγιση. Το Yubico έχει έναν οδηγό για τη χρήση U2F+SSH με PIV/PKCS11. Αυτό δεν είναι το ίδιο με το FIDO U2F και, ενώ λειτουργεί, είναι λίγη δουλειά για να καταλάβουμε τι μαγικό συμβαίνει.
- Εφαρμόστε τον προσαρμοσμένο ssh agent του yubikey-agent. Ο Filippo Valsorda έγραψε έναν SSH agent για τα Yubikeys. Είναι εντελώς νέος και περιέχει ελάχιστα χαρακτηριστικά.
- Χρησιμοποιήστε το Touch ID και το sekey. Το Sekey είναι ένας παράγοντας SSH ανοιχτού κώδικα που αποθηκεύει μυστικά κλειδιά σε έναν ασφαλή θύλακα στο Mac σας και σας επιτρέπει να χρησιμοποιείτε το Touch ID για τη λειτουργία πρόσβασης.
- Χρησιμοποιήστε το Single Sign On SSH. Έγραψα ένα σεμινάριο για να σας βοηθήσω να το ρυθμίσετε. Ένα από τα πλεονεκτήματα του single sign on SSH είναι η δυνατότητα αξιοποίησης των πολιτικών ασφαλείας του παρόχου ταυτότητας σας — συμπεριλαμβανομένης της υποστήριξης για έλεγχο ταυτότητας πολλαπλών παραγόντων (MFA).
Ασφαλής χρήση της προώθησης πρακτόρων
Στο SHH, η προώθηση πρακτόρων επιτρέπει σε έναν απομακρυσμένο κεντρικό υπολογιστή να έχει πρόσβαση στον παράγοντα SSH της τοπικής σας συσκευής. Όταν χρησιμοποιείτε SSH με ενεργοποιημένη την προώθηση πρακτόρων (συνήθως μέσω ssh -A), θα υπάρχουν δύο κανάλια στη σύνδεση: η διαδραστική σας συνεδρία και ένα κανάλι για την προώθηση πρακτόρων. Μέσω αυτού του καναλιού, η υποδοχή Unix που δημιουργείται από τον τοπικό σας παράγοντα SSH επικοινωνεί με τον απομακρυσμένο κεντρικό υπολογιστή. Αυτή είναι μια επικίνδυνη μέθοδος, καθώς ένας χρήστης με πρόσβαση root στην απομακρυσμένη συσκευή μπορεί να έχει πρόσβαση στον τοπικό σας παράγοντα SSH και ενδεχομένως να σας μιμηθεί στο δίκτυο. Χρησιμοποιώντας τον τυπικό παράγοντα SSH από τη σουίτα Open SSH, δεν θα γνωρίζετε καν ότι αυτό έχει συμβεί. Η κατοχή ενός κλειδιού U2F (ή Sekey) θα σας βοηθήσει να αποκλείσετε αποτελεσματικά τυχόν προσπάθειες χρήσης του παράγοντα SSH από έξω.
Ακόμα και με αυτήν την προφύλαξη, είναι καλή ιδέα να χρησιμοποιείτε την προώθηση πρακτόρων όσο το δυνατόν λιγότερο. Μην τη χρησιμοποιείτε σε κάθε συνεδρία - χρησιμοποιήστε την προώθηση πρακτόρων μόνο όταν είστε βέβαιοι ότι είναι απαραίτητη για την τρέχουσα συνεδρία.
Έξοδος από παγωμένη συνεδρία
Μια διακοπή δικτύου, μια ανεξέλεγκτη συμπεριφορά προγράμματος ή μια ακολουθία ελέγχου που μπλοκάρει την είσοδο από το πληκτρολόγιο είναι όλες πιθανές αιτίες για τη διακοπή μιας περιόδου λειτουργίας SSH.
Υπάρχουν διάφοροι τρόποι για να τερματίσετε μια παγωμένη συνεδρία:
- Αυτόματη αποσύνδεση όταν διακοπεί η λειτουργία του δικτύου. Πρέπει να προσθέσετε τα ακόλουθα στο αρχείο .ssh/config:
ServerAliveInterval 5 ServerAliveCountMax 1Το ssh θα στέλνει echo στον απομακρυσμένο κεντρικό υπολογιστή κάθε δευτερόλεπτα ServerAliveInterval για να ελέγξει τη σύνδεση. Εάν περισσότερες από ServerAliveCountMax echos δεν λάβουν απόκριση, το ssh θα ορίσει χρονικό όριο για τη σύνδεση και θα τερματίσει την περίοδο λειτουργίας.
- Αποσύνδεση από μια συνεδρία. Το ssh χρησιμοποιεί τον χαρακτήρα ~ (tilde) ως χαρακτήρα escape από προεπιλογή. Η εντολή ~. κλείνει την ανοιχτή σύνδεση και σας επιστρέφει στο τερματικό. (Οι ακολουθίες Escape μπορούν να εισαχθούν μόνο σε νέα γραμμή.) Η εντολή ~? εμφανίζει μια πλήρη λίστα με τις εντολές που είναι διαθέσιμες στην συνεδρία. Σημειώστε ότι σε διεθνή πληκτρολόγια, ίσως χρειαστεί να πατήσετε δύο φορές το πλήκτρο ~ για να πληκτρολογήσετε τον χαρακτήρα ~.
Γιατί συμβαίνουν εξαρχής οι παγωμένες συνεδρίες; Όταν δημιουργήθηκε για πρώτη φορά το διαδίκτυο, οι υπολογιστές σπάνια μετακινούνταν από το ένα μέρος στο άλλο. Όταν χρησιμοποιείτε φορητό υπολογιστή και αλλάζετε μεταξύ πολλών δικτύων WiFi IPv4, η διεύθυνση IP σας αλλάζει. Δεδομένου ότι το SSH βασίζεται σε συνδέσεις TCP, οι οποίες με τη σειρά τους βασίζονται σε ένα τελικό σημείο με σταθερή διεύθυνση IP, κάθε φορά που αλλάζετε δίκτυο, οι συνδέσεις SSH χάνουν τον περιγραφέα υποδοχής και ουσιαστικά χάνονται. Όταν αλλάζει η διεύθυνση IP σας, χρειάζεται χρόνος για να ανιχνεύσει η στοίβα δικτύου σας την απώλεια του περιγραφέα. Όταν προκύπτουν προβλήματα δικτύου, δεν θέλετε ένας από τους κόμβους σε μια σύνδεση TCP να εγκαταλείψει πολύ νωρίς. Έτσι, το πρωτόκολλο θα προσπαθήσει να στείλει ξανά τα δεδομένα μερικές φορές ακόμη πριν εγκαταλείψει τελικά. Εν τω μεταξύ, στο τερματικό σας, η συνεδρία θα εμφανίζεται κολλημένη. Το IPv6 προσθέτει μερικές λειτουργίες που σχετίζονται με την κινητικότητα και επιτρέπουν σε μια συσκευή να διατηρεί την οικιακή της διεύθυνση κατά την αλλαγή δικτύων. Ίσως μια μέρα αυτό να μην είναι τόσο μεγάλο πρόβλημα.
Πώς να διατηρήσετε ανοιχτό ένα μόνιμο τερματικό σε έναν απομακρυσμένο κεντρικό υπολογιστή
Υπάρχουν δύο διαφορετικές προσεγγίσεις για το πώς να διατηρήσετε μια σύνδεση όταν μετακινείστε μεταξύ διαφορετικών δικτύων ή θέλετε να αποσυνδεθείτε για κάποιο χρονικό διάστημα.
1. Επωφεληθείτε ή
Αν χρειάζεστε πραγματικά μια σύνδεση που να μην διακόπτεται ακόμα και όταν αλλάζετε δίκτυο, χρησιμοποιήστε το Mosh, το κινητό κέλυφος. Είναι ένα ασφαλές κέλυφος που χρησιμοποιεί πρώτα μια χειραψία SSH και στη συνέχεια μεταβαίνει στο δικό του κρυπτογραφημένο κανάλι για όλη τη διάρκεια της συνεδρίας. Με αυτόν τον τρόπο, το Mosh δημιουργεί ένα ξεχωριστό, εξαιρετικά ασφαλές και ισχυρό κανάλι που μπορεί να αντέξει διακοπές στο διαδίκτυο, την αλλαγή της διεύθυνσης IP του φορητού υπολογιστή σας, σοβαρές διακοπές δικτύου και πολλά άλλα, όλα χάρη στη μαγεία των συνδέσεων UDP και το πρωτόκολλο συγχρονισμού που χρησιμοποιεί το Mosh.
Για να χρησιμοποιήσετε το Mosh, θα χρειαστεί να το εγκαταστήσετε τόσο στον υπολογιστή-πελάτη όσο και στον διακομιστή και να ανοίξετε τις θύρες 60000-61000 για μη σχετιζόμενη κίνηση UPD στον απομακρυσμένο κεντρικό υπολογιστή σας. Από εκεί και πέρα, μπορείτε απλώς να χρησιμοποιήσετε mosh user@server.
Το Mosh λειτουργεί σε επίπεδο οθόνης και πληκτρολόγησης, γεγονός που του δίνει μια σειρά από πλεονεκτήματα σε σχέση με το SSH, το οποίο στέλνει μια δυαδική ροή τυπικής εισόδου και εξόδου μεταξύ του πελάτη και του διακομιστή. Εάν χρειάζεται μόνο να συγχρονίσουμε οθόνες και πληκτρολόγηση, τότε γίνεται πολύ πιο εύκολο να επανασυνδεθούμε αργότερα. Ενώ το SSH θα αποθηκεύσει στην προσωρινή μνήμη και θα στείλει όλα όσα συνέβησαν, το Mosh χρειάζεται μόνο να αποθηκεύσει στην προσωρινή μνήμη τα πληκτρολόγια και να συγχρονίσει το τελευταίο καρέ του παραθύρου του τερματικού με τον πελάτη.
2. Χρησιμοποιήστε το tmux
Αν θέλετε να "έρχεστε και να φεύγετε όπως θέλετε" και να διατηρείτε μια συνεδρία τερματικού σε έναν απομακρυσμένο κεντρικό υπολογιστή, χρησιμοποιήστε tmuxΛατρεύω το tmux και το χρησιμοποιώ συνέχεια. Εάν η σύνδεση SSH σας διακοπεί, τότε για να επιστρέψετε στην περίοδο λειτουργίας tmux, απλώς πρέπει να επανασυνδεθείτε και να πληκτρολογήσετε tmux attachΔιαθέτει επίσης εξαιρετικές λειτουργίες όπως καρτέλες και πάνελ εντός τερματικού παρόμοια με αυτά του iOS Terminal, καθώς και τη δυνατότητα κοινής χρήσης τερματικών με άλλους.
Некоторые любят приукрасить свой tmux с помощью Byobu, пакетом который значительно улучшает удобство использования tmux и добавляет в него много сочетаний клавиш. Byobu поставляется вместе с Ubuntu, и его легко установить на Mac через Homebrew.
Κοινή χρήση μιας συνεδρίας απομακρυσμένου τερματικού με έναν φίλο
Μερικές φορές, όταν εντοπίζετε πολύπλοκα προβλήματα στους διακομιστές σας, ίσως θελήσετε να μοιραστείτε μια συνεδρία SSH με κάποιον που δεν βρίσκεται στον ίδιο χώρο με εσάς. Το tmux είναι ιδανικό για αυτήν την εργασία! Χρειάζονται μόνο λίγα βήματα:
- Βεβαιωθείτε ότι το tmux είναι εγκατεστημένο στον κόμβο bastion σας ή σε οποιονδήποτε διακομιστή πρόκειται να εργαστείτε.
- Θα χρειαστεί και οι δύο να συνδεθείτε μέσω SSH στη συσκευή χρησιμοποιώντας τον ίδιο λογαριασμό.
- Ένας από εσάς πρέπει να ξεκινήσει το tmux για να ξεκινήσει μια συνεδρία tmux.
- Ένας άλλος θα πρέπει να εκτελέσει το tmux attach.
- Ιδού! Έχετε ένα κοινό τερματικό σταθμό.
Αν θέλετε πιο εξελιγμένες συνεδρίες tmux για πολλούς χρήστες, δοκιμάστε το tmate, μια διακλάδωση του tmux που κάνει τις κοινόχρηστες συνεδρίες τερματικού πολύ πιο εύκολες.
Πηγή: www.habr.com
