Το πρώτο βήμα στη ρύθμιση των κλειδιών SSH είναι η δημιουργία ενός ζεύγους κλειδιών στον υπολογιστή-πελάτη (γενικά σε έναν υπολογιστή):
$ ssh-keygen
Για αρχή, το ssh-keygen θα δημιουργήσει ένα ζεύγος κλειδιών RSA 2048-bit, το οποίο θα είναι αρκετά ασφαλές για τις περισσότερες περιπτώσεις χρήσης.
Εναλλακτικά, μπορείτε προαιρετικά να εισαγάγετε τη σημαία -b 4096 για να δημιουργήσετε ένα μεγαλύτερο κλειδί 4096-bit.
Αφού εισαγάγετε την εντολή, θα πρέπει να μπορείτε να δείτε την ακόλουθη προτροπή:
Output Enter file in which to save the key (/your_home/.ssh/id_rsa):
Πατήστε enter για να αποθηκεύσετε το ζεύγος κλειδιών στον υποκατάλογο .ssh/ στον αρχικό σας κατάλογο ή σε μια προσαρμοσμένη εναλλακτική διαδρομή. Θα πρέπει να εμφανιστεί η ακόλουθη προτροπή:
Output Enter passphrase ( leave empty for no passphrase):
Προαιρετικά, μπορείτε να εισαγάγετε μια ασφαλή φράση πρόσβασης, η οποία συνιστάται ιδιαίτερα. Μια φράση πρόσβασης προσθέτει ένα επιπλέον επίπεδο ασφάλειας για να αποτρέψει τη σύνδεση μη εξουσιοδοτημένων χρηστών. Για να μάθετε περισσότερα σχετικά με την ασφάλεια, συμβουλευτείτε το σεμινάριό μας σχετικά με τον τρόπο ρύθμισης παραμέτρων ελέγχου ταυτότητας βάσει κλειδιού SSH σε διακομιστή Linux.
Στη συνέχεια, θα πρέπει να δείτε την ακόλουθη έξοδο:Output Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+
Θα πρέπει τώρα να έχετε ένα δημόσιο και ένα ιδιωτικό κλειδί που μπορείτε να χρησιμοποιήσετε για έλεγχο ταυτότητας. Το επόμενο βήμα στη διαδικασία είναι να τοποθετήσετε το δημόσιο κλειδί στον διακομιστή σας, ώστε να μπορείτε να χρησιμοποιήσετε έλεγχο ταυτότητας που βασίζεται σε κλειδί SSH για να συνδεθείτε.
Ο πιο γρήγορος τρόπος για να αντιγράψετε το δημόσιο κλειδί σας στον κεντρικό υπολογιστή του Ubuntu είναι να χρησιμοποιήσετε ένα βοηθητικό πρόγραμμα που ονομάζεται ssh-copy-id. Αυτή η μέθοδος συνιστάται ιδιαίτερα εάν είναι διαθέσιμη. Εάν δεν έχετε διαθέσιμο το ssh-copy-id στον υπολογιστή-πελάτη σας, μπορείτε να χρησιμοποιήσετε μία από τις δύο εναλλακτικές μεθόδους που παρέχονται σε αυτήν την ενότητα (αντιγραφή μέσω SSH που βασίζεται σε κωδικό πρόσβασης ή χειροκίνητη αντιγραφή του κλειδιού).
Το εργαλείο ssh-copy-id περιλαμβάνεται από προεπιλογή σε πολλά λειτουργικά συστήματα, ενδέχεται να το έχετε διαθέσιμο στο τοπικό σας σύστημα. Για να λειτουργήσει, θα χρειαστεί να έχετε πρόσβαση SSH στον διακομιστή σας με κωδικό πρόσβασης. Για να χρησιμοποιήσετε το βοηθητικό πρόγραμμα, πρέπει να καθορίσετε τον απομακρυσμένο κεντρικό υπολογιστή στον οποίο θέλετε να συνδεθείτε και απλώς να προσθέσετε τον λογαριασμό χρήστη στον οποίο έχετε πρόσβαση SSH με κωδικό πρόσβασης. Αυτός θα είναι ο λογαριασμός στον οποίο θα αντιγραφεί το δημόσιο κλειδί SSH σας.
Η σύνταξη είναι:
$ ssh-copy-id username@remote_host
Ενδέχεται να δείτε το ακόλουθο μήνυμα:
Output The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
Αυτό σημαίνει ότι ο τοπικός σας υπολογιστής δεν αναγνώρισε τον απομακρυσμένο κεντρικό υπολογιστή. Αυτό πιθανότατα θα συμβεί την πρώτη φορά που θα συνδεθείτε σε έναν νέο κεντρικό υπολογιστή. Πληκτρολογήστε "ναι" και πατήστε ENTER για να συνεχίσετε.
Στη συνέχεια, το βοηθητικό πρόγραμμα θα σαρώσει τον τοπικό σας λογαριασμό για το κλειδί id_rsa.pub που δημιουργήσαμε νωρίτερα. Όταν βρει το κλειδί, θα σας ζητήσει τον κωδικό πρόσβασης του λογαριασμού του απομακρυσμένου χρήστη:
Output /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@111.111.11.111's password:
Πληκτρολογήστε τον κωδικό πρόσβασης (σημειώστε ότι η πληκτρολόγησή σας δεν θα εμφανίζεται για λόγους ασφαλείας) και πατήστε ENTER. Το βοηθητικό πρόγραμμα θα συνδεθεί με τον λογαριασμό στον απομακρυσμένο κεντρικό υπολογιστή χρησιμοποιώντας τον κωδικό πρόσβασης που δώσατε. Στη συνέχεια, θα αντιγράψει τα περιεχόμενα του κλειδιού ~/.ssh/id_rsa.pub σε ένα αρχείο στον αρχικό κατάλογο ~/.ssh του απομακρυσμένου λογαριασμού που ονομάζεται authorized_keys.
Μετά από αυτό θα πρέπει να δείτε την ακόλουθη έξοδο:
Output Number of key(s) added: 1 Logging into the machine, with: "ssh 'username@111.111.11.111'" and check to make sure that only the key you wanted was added.
Σε αυτό το σημείο της διαδικασίας, το κλειδί id_rsa.pub έχει μεταφορτωθεί στον απομακρυσμένο λογαριασμό.
Εάν δεν έχετε διαθέσιμο το ssh-copy-id, αλλά έχετε πρόσβαση SSH με κωδικό πρόσβασης σε έναν λογαριασμό στον διακομιστή σας, μπορείτε να ανεβάσετε τα κλειδιά σας χρησιμοποιώντας μια συμβατική μέθοδο SSH.
Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας την εντολή cat για να διαβάσουμε τα περιεχόμενα του δημόσιου κλειδιού SSH στον τοπικό μας υπολογιστή και να τα μεταφέρουμε μέσω μιας σύνδεσης SSH στον απομακρυσμένο διακομιστή. Από την άλλη πλευρά, μπορούμε να βεβαιωθούμε ότι ο κατάλογος ~/.ssh υπάρχει στον λογαριασμό που χρησιμοποιούμε και στη συνέχεια να εξαγάγουμε το περιεχόμενο που μεταφέραμε σε ένα αρχείο που ονομάζεται authorized_keys μέσα σε αυτόν τον κατάλογο.
Θα χρησιμοποιήσουμε το σύμβολο ανακατεύθυνσης >> για να προσθέσουμε το περιεχόμενο αντί να το αντικαταστήσουμε. Αυτό θα μας επιτρέψει να προσθέσουμε κλειδιά χωρίς να καταστρέψουμε κλειδιά που έχουν προστεθεί προηγουμένως.
Η πλήρης εντολή μοιάζει με αυτό:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Ενδέχεται να δείτε το ακόλουθο μήνυμα:
Output The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
Αυτό σημαίνει ότι ο τοπικός σας υπολογιστής δεν αναγνωρίζει τον απομακρυσμένο κεντρικό υπολογιστή. Αυτό θα συμβεί την πρώτη φορά που θα συνδεθείτε σε έναν νέο κεντρικό υπολογιστή. Πληκτρολογήστε "ναι" και πατήστε ENTER για να συνεχίσετε.
Στη συνέχεια, θα σας ζητηθεί να εισαγάγετε τον κωδικό πρόσβασης του λογαριασμού απομακρυσμένου χρήστη:
Output username@111.111.11.111's password:
Αφού εισαγάγετε τον κωδικό πρόσβασής σας, το περιεχόμενο του κλειδιού id_rsa.pub θα αντιγραφεί στο τέλος του αρχείου authorized_keys του λογαριασμού του απομακρυσμένου χρήστη. Συνεχίστε στο Βήμα 3 εάν αυτό ήταν επιτυχές.
Εάν δεν έχετε πρόσβαση SSH με κωδικό πρόσβασης στον διακομιστή σας, θα πρέπει να ολοκληρώσετε την παραπάνω διαδικασία χειροκίνητα.
Θα προσαρτήσουμε χειροκίνητα το περιεχόμενο του αρχείου id_rsa.pub στο αρχείο ~/.ssh/authorized_keys στον απομακρυσμένο υπολογιστή σας.
Για να εμφανίσετε το περιεχόμενο του κλειδιού id_rsa.pub, πληκτρολογήστε τα εξής στον τοπικό σας υπολογιστή:
cat ~/.ssh/id_rsa.pub
Θα δείτε το περιεχόμενο του κλειδιού, το οποίο θα πρέπει να μοιάζει κάπως έτσι:
Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle 7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G /12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U /ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test
Αποκτήστε πρόσβαση στον απομακρυσμένο κεντρικό υπολογιστή σας χρησιμοποιώντας τη μέθοδο που έχετε διαθέσιμη.
Μόλις αποκτήσετε πρόσβαση στον λογαριασμό σας στον απομακρυσμένο διακομιστή, βεβαιωθείτε ότι ο κατάλογος ~/.ssh υπάρχει. Η εντολή θα δημιουργήσει τον κατάλογο εάν είναι απαραίτητο ή δεν θα κάνει τίποτα εάν υπάρχει ήδη:
mkdir -p ~/.ssh
Τώρα, μπορείτε να δημιουργήσετε ή να τροποποιήσετε το αρχείο authorized_keys μέσα σε αυτόν τον κατάλογο. Μπορείτε να προσθέσετε τα περιεχόμενα του αρχείου id_rsa.pub στο τέλος του αρχείου authorized_keys, δημιουργώντας το εάν είναι απαραίτητο, χρησιμοποιώντας αυτήν την εντολή:
Στην ακόλουθη εντολή, αντικαταστήστε την εντολή public_key_string με την έξοδο από την εντολή cat ~/.ssh/id_rsa.pub που εκτελέσατε στο τοπικό σας σύστημα. Πρέπει να ξεκινά με ssh-rsa AAAA....
echo public_key_string >> ~/.ssh/authorized_keys
Μπορούμε τώρα να προσπαθήσουμε να αποκτήσουμε πρόσβαση στον διακομιστή Ubuntu μας με έλεγχο ταυτότητας χωρίς κωδικό πρόσβασης.
Εάν έχετε ολοκληρώσει μία από τις παραπάνω διαδικασίες, θα πρέπει να μπορείτε να συνδεθείτε στον απομακρυσμένο κεντρικό υπολογιστή χωρίς τον κωδικό πρόσβασης του απομακρυσμένου λογαριασμού.
Η βασική διαδικασία είναι η ίδια με την άλλη φορά που το χρησιμοποιήσαμε:
$ ssh username@remote_host
Αν αυτή είναι η πρώτη φορά που συνδέεστε σε αυτόν τον κεντρικό υπολογιστή (αν χρησιμοποιήσατε την τελευταία μέθοδο παραπάνω), ενδέχεται να δείτε κάτι σαν αυτό:
Output The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes
Εάν συμβεί αυτό, σημαίνει ότι ο τοπικός σας υπολογιστής δεν αναγνωρίζει τον απομακρυσμένο κεντρικό υπολογιστή. Πληκτρολογήστε "ναι" και, στη συνέχεια, πατήστε ENTER για να συνεχίσετε.
Εάν δεν δώσατε κωδικό πρόσβασης για το ιδιωτικό σας κλειδί, θα συνδεθείτε αμέσως. Εάν δώσατε κωδικό πρόσβασης για το ιδιωτικό κλειδί κατά τη δημιουργία του κλειδιού, θα σας ζητηθεί να τον εισαγάγετε τώρα (σημειώστε ότι οι πληκτρολογήσεις σας δεν θα εμφανίζονται στην περίοδο λειτουργίας τερματικού για λόγους ασφαλείας). Μετά τον έλεγχο ταυτότητας, θα πρέπει να ανοίξει μια νέα περίοδος λειτουργίας κελύφους για εσάς με τον διαμορφωμένο λογαριασμό στον διακομιστή Ubuntu.
Εάν ο έλεγχος ταυτότητας βάσει κλειδιού ήταν επιτυχής, συνεχίστε για να μάθετε πώς να ασφαλίσετε περαιτέρω το σύστημά σας απενεργοποιώντας τον έλεγχο ταυτότητας με κωδικό πρόσβασης.
Εάν καταφέρατε να συνδεθείτε στον λογαριασμό σας χρησιμοποιώντας SSH χωρίς κωδικό πρόσβασης, έχετε ρυθμίσει με επιτυχία τον έλεγχο ταυτότητας που βασίζεται σε κλειδί SSH στον λογαριασμό σας. Ωστόσο, ο μηχανισμός ελέγχου ταυτότητας που βασίζεται σε κωδικό πρόσβασης εξακολουθεί να είναι ενεργός, πράγμα που σημαίνει ότι ο διακομιστής σας εξακολουθεί να είναι εκτεθειμένος σε επιθέσεις brute-force.
Πριν ολοκληρώσετε τα βήματα σε αυτήν την ενότητα, βεβαιωθείτε ότι έχετε ρυθμίσει τον έλεγχο ταυτότητας βάσει κλειδιού SSH για τον λογαριασμό root σε αυτόν τον διακομιστή ή, κατά προτίμηση, ότι έχετε ρυθμίσει τον έλεγχο ταυτότητας βάσει κλειδιού SSH για έναν λογαριασμό που δεν είναι root σε αυτόν τον διακομιστή με δικαιώματα sudo. Αυτό το βήμα θα κλειδώσει τις συνδέσεις που βασίζονται σε κωδικό πρόσβασης, επομένως είναι ζωτικής σημασίας να διασφαλίσετε ότι θα εξακολουθείτε να έχετε πρόσβαση διαχειριστή.
Μόλις επιβεβαιώσετε ότι ο απομακρυσμένος λογαριασμός σας έχει δικαιώματα διαχειριστή, συνδεθείτε στον απομακρυσμένο διακομιστή σας με κλειδιά SSH, είτε ως root είτε με έναν λογαριασμό με δικαιώματα sudo. Στη συνέχεια, ανοίξτε το αρχείο διαμόρφωσης του δαίμονα SSH:
sudo nano /etc/ssh/sshd_config
Μέσα στο αρχείο, αναζητήστε μια οδηγία που ονομάζεται PasswordAuthentication. Αυτή μπορεί να έχει σχολιαστεί. Αποσχολιάστε τη γραμμή και ορίστε την τιμή σε "όχι". Αυτό θα απενεργοποιήσει τη δυνατότητά σας να συνδέεστε μέσω SSH χρησιμοποιώντας κωδικούς πρόσβασης λογαριασμού:
/etc/ssh/sshd_config ... PasswordAuthentication no ...
Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε πατώντας CTRL + X, έπειτα Y για να επιβεβαιώσετε την αποθήκευση του αρχείου και τέλος ENTER για να τερματίσετε το nano. Για να εφαρμόσουμε αυτές τις αλλαγές, πρέπει να επανεκκινήσουμε την υπηρεσία sshd:
$ sudo systemctl restart ssh
Ως προφύλαξη, ανοίξτε ένα νέο παράθυρο τερματικού και ελέγξτε ότι η υπηρεσία SSH λειτουργεί σωστά πριν κλείσετε αυτήν την περίοδο λειτουργίας:
$ ssh username@remote_host
Μόλις επαληθεύσετε την υπηρεσία SSH σας, μπορείτε να κλείσετε με ασφάλεια όλες τις τρέχουσες συνεδρίες διακομιστή.
Το daemon SSH στον διακομιστή Ubuntu σας ανταποκρίνεται πλέον μόνο σε κλειδιά SSH. Ο έλεγχος ταυτότητας που βασίζεται σε κωδικό πρόσβασης απενεργοποιήθηκε με επιτυχία.
Με την ολοκλήρωση του σεμιναρίου, θα πρέπει πλέον να έχετε ρυθμίσει τον έλεγχο ταυτότητας βάσει κλειδιού SSH στον διακομιστή σας, επιτρέποντάς σας να συνδεθείτε χωρίς να δώσετε κωδικό πρόσβασης λογαριασμού.