Τα δημόσια κλειδιά SSH σας δυσκολεύουν; Δοκιμάστε μία από αυτές τις λύσεις.
Το SSH είναι ένα χρήσιμο εργαλείο για τη σύνδεση σε απομακρυσμένα μηχανήματα, αλλά ενδέχεται να αντιμετωπίσετε ένα σφάλμα "Απόρριψη άδειας (δημόσιο κλειδί)" που αφορά το δημόσιο κλειδί σας στο Linux. Ευτυχώς, υπάρχουν μερικές εύκολες διορθώσεις που μπορείτε να δοκιμάσετε για να το αντιμετωπίσετε.
Τι είναι το δημόσιο κλειδί;
Όταν δημιουργείτε ένα ζεύγος κλειδιών για SSH στο Linux, θα σας δοθεί ένα δημόσιο κλειδί και ένα ιδιωτικό κλειδί. Το ιδιωτικό κλειδί θα παραμείνει μαζί σας ως στενά φυλαγμένο μυστικό, αλλά το δημόσιο κλειδί είναι αυτό που θα μεταδοθεί σε απομακρυσμένους διακομιστές για να σας επιτρέψει να συνδεθείτε χωρίς κωδικό πρόσβασης. Ο τοπικός σας πελάτης SSH θα αντιστοιχίσει το δημόσιο κλειδί με το ιδιωτικό κλειδί όταν συνδέεστε.
Το πλεονέκτημα αυτής της μεθόδου είναι ότι πρέπει να δώσετε μόνο το δημόσιο κλειδί. Εφόσον διατηρείτε το ιδιωτικό σας κλειδί ιδιωτικό, αυτό θα σας κρατά ασφαλείς σε περίπτωση που το δημόσιο κλειδί σας παραβιαστεί. Το δημόσιο κλειδί θα είναι άχρηστο από μόνο του.
Το OpenSSH, ο πιο ευρέως χρησιμοποιούμενος πελάτης και διακομιστής SSH στον κόσμο ανοιχτού κώδικα, απαιτεί το αρχείο που περιέχει οποιοδήποτε δημόσια κλειδιά στο απομακρυσμένο μηχάνημα (."ssh/authorized_keys" στον αρχικό σας κατάλογο), για να έχετε ορισμένα δικαιώματα. Δεν θα λειτουργήσει εάν τα δικαιώματα εγγραφής έχουν οριστεί για άλλους χρήστες, κάτι που είναι γνωστό ως "writable στον κόσμο". Επειδή το όνομα του καταλόγου ξεκινά με τελεία (.), δεν θα εμφανίζεται σε καμία λίστα ls εκτός και αν χρησιμοποιήσετε το εντολή ls -A.
Τα δικαιώματα ενδέχεται να αλλάξουν εάν το αρχείο αντιγράφηκε από άλλον υπολογιστή ή το δημιουργήσατε μόνοι σας. Ευτυχώς, αυτό είναι εύκολο να διορθωθεί.
Ελέγξτε τα δικαιώματα του δημόσιου κλειδιού σας
Το αρχείο authorized_keys είναι απλώς ένα αρχείο απλού κειμένου που περιέχει όλα τα δημόσια κλειδιά από πελάτες που θέλετε να μπορείτε να συνδεθείτε στο λογαριασμό σας στο απομακρυσμένο μηχάνημα. Για να δείτε τις άδειές του, χρησιμοποιήστε την εντολή ls με την επιλογή -l:
ls -l ~/.ssh/authorized_keys
Αυτό θα εμφανίσει τις ρυθμίσεις δικαιωμάτων για τον κάτοχο, την ομάδα και άλλους χρήστες. Δώστε προσοχή στα έξι τελευταία γράμματα της συμβολοσειράς. Αν δείτε "w" σε αυτά, αυτό σημαίνει ότι η ομάδα ή άλλοι μπορούν να γράψουν σε αυτήν, καθιστώντας την ανασφαλή.
Θα θέλετε αυτό το αρχείο να είναι εγγράψιμο από εσάς, αλλά όχι από την ομάδα ή άλλους. Για να δώσετε πρόσβαση στους σωστούς χρήστες, μπορείτε να αλλάξετε τα δικαιώματα με το chmod.
Υπάρχουν δύο τρόποι: αριθμητικά και συμβολικά.
Ο αριθμητικός τρόπος είναι πιο σύντομος, αλλά πρέπει να απομνημονεύσετε τους οκταδικούς αριθμούς αδειών:
chmod 700 ~/.ssh/authorized_keys
Η συμβολική μέθοδος είναι πιο μνημονική:
chmod go-w ~/.ssh/authorized_keys
Ασφαλής αντιγραφή κλειδιών με χρήση ssh-agent
Μπορείτε να αντιγράψετε και να επικολλήσετε με μη αυτόματο τρόπο τυχόν δημόσια κλειδιά από το μηχάνημά σας στο ~/.ssh/.authorized_keys αρχείο, αλλά η χρήση του προγράμματος ssh-agent θα μειώσει τις πιθανότητες τυχόν σφαλμάτων δικαιωμάτων.
Για να ξεκινήσετε το ssh-agent, χρησιμοποιήστε αυτήν την εντολή:
eval "$(ssh-agent-s)"
Για να συνδεθείτε σε έναν απομακρυσμένο διακομιστή χρησιμοποιώντας ssh-agent, χρησιμοποιήστε την επιλογή -A με ssh
ssh -A [email protected]
Ελέγξτε τις ρυθμίσεις sshd του απομακρυσμένου διακομιστή
Εάν κάποια από αυτές τις προσπάθειες αποτύχει, ίσως χρειαστεί να κάνετε κάποιες αλλαγές διαμόρφωσης στον διακομιστή sshd στον απομακρυσμένο υπολογιστή, εάν έχετε πρόσβαση root. Εάν όχι, πιθανότατα θα πρέπει να επικοινωνήσετε με τον διαχειριστή του συστήματος για να σας βοηθήσει να επιλύσετε τυχόν προβλήματα σύνδεσης SSH. Αυτή είναι μια μέθοδος έσχατης ανάγκης γιατί θα μπορούσε να κάνει το σύστημά σας λιγότερο ασφαλές.
Το αρχείο διαμόρφωσης σε όλο το σύστημα για το sshd είναι /etc/ssh/sshd_config. Επειδή ανήκει στο root, θα χρειαστεί να χρησιμοποιήσετε το sudo για να το επεξεργαστείτε. Για παράδειγμα, για να το επεξεργαστείτε με το Vim:
sudo vim /etc/ssh/sshd_config
Για να ενεργοποιήσετε το sshd να σας επιτρέπει να συνδεθείτε ακόμα και αν το αρχείο authorized_keys σας είναι εγγράψιμο παγκοσμίως, ορίστε την επιλογή "StrictModes" σε "όχι" σε αυτό το αρχείο.
Αποθηκεύστε το και επανεκκινήστε τον διακομιστή SSH:
sudo systemctl restart sshd.service
Τώρα μπορείτε να διορθώσετε σφάλματα αδειών δημόσιου κλειδιού SSH
Ενδέχεται να αντιμετωπίσετε σφάλματα σχετικά με τα δημόσια κλειδιά SSH σε απομακρυσμένα συστήματα. Ευτυχώς, τις περισσότερες φορές το μόνο που έχετε να κάνετε είναι να ελέγξετε και να ορίσετε τα δικαιώματα του αρχείου έτσι ώστε κανείς άλλος να μην μπορεί να δει το κλειδί σας. Μπορείτε επίσης να χρησιμοποιήσετε το ssh-agent για πιο αξιόπιστες συνδέσεις. Ως τελευταία λύση, μπορείτε να κάνετε τον διακομιστή SSH λιγότερο αυστηρό.