Ρύθμιση σύνδεσης SSH χωρίς κωδικό πρόσβασης για πολλούς απομακρυσμένους διακομιστές με χρήση δέσμης ενεργειών
Ο έλεγχος ταυτότητας βάσει κλειδιού SSH (γνωστός και ως έλεγχος ταυτότητας με δημόσιο κλειδί) επιτρέπει έλεγχο ταυτότητας χωρίς κωδικό πρόσβασης και είναι μια πιο ασφαλής και πολύ καλύτερη λύση από τον έλεγχο ταυτότητας με κωδικό πρόσβασης. Ένα σημαντικό πλεονέκτημα της σύνδεσης χωρίς κωδικό πρόσβασης SSH, πόσο μάλλον της ασφάλειας, είναι ότι επιτρέπει την αυτοματοποίηση διαφόρων ειδών διαδικασιών μεταξύ διακομιστών.
Σε αυτό το άρθρο, θα δείξουμε πώς να δημιουργήσετε ένα ζεύγος κλειδιών SSH και να αντιγράψετε το δημόσιο κλειδί σε πολλούς απομακρυσμένους κεντρικούς υπολογιστές Linux ταυτόχρονα, με ένα σενάριο φλοιού.
Δημιουργήστε ένα νέο κλειδί SSH στο Linux
Πρώτα, δημιουργήστε το ζεύγος κλειδιών SSH (το ιδιωτικό κλειδί/κλειδί ταυτότητας που χρησιμοποιεί ένας πελάτης SSH για τον έλεγχο ταυτότητας όταν συνδέεται σε έναν απομακρυσμένο διακομιστή SSH και το δημόσιο κλειδί που είναι αποθηκευμένο ως εξουσιοδοτημένο κλειδί σε ένα απομακρυσμένο σύστημα που εκτελεί διακομιστή SSH) χρησιμοποιώντας το ssh-keygen ως εξής:
ssh-keygen
Δημιουργήστε ένα σενάριο Shell για πολλαπλές απομακρυσμένες συνδέσεις
Στη συνέχεια, δημιουργήστε ένα σενάριο φλοιού που θα βοηθήσει στην αντιγραφή ενός δημόσιου κλειδιού σε πολλούς απομακρυσμένους κεντρικούς υπολογιστές Linux.
vim ~/.bin/ssh-copy.sh
Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο αρχείο (αντικαταστήστε τις ακόλουθες μεταβλητές αναλόγως USER_NAME
– το όνομα χρήστη με το οποίο θα συνδεθείτε, HOST_FILE
– ένα αρχείο που περιέχει τη λίστα με τα ονόματα κεντρικού υπολογιστή ή τις διευθύνσεις IP και ERROR_FILE
– ένα αρχείο για την αποθήκευση τυχόν σφαλμάτων εντολών ssh).
#!/bin/bash
USER_NAME="root"
HOST_FILE="/root/hosts"
ERROR_FILE="/tmp/ssh-copy_error.txt"
PUBLIC_KEY_FILE="$1"
if [ ! -f $PUBLIC_KEY_FILE ]; then
echo "File '$PUBLIC_KEY_FILE' not found!"
exit 1
fi
if [ ! -f $HOST_FILE ]; then
echo "File '$HOST_FILE' not found!"
exit 2
fi
for IP in `cat $HOST_FILE`; do
ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE
RESULT=$?
if [ $RESULT -eq 0 ]; then
echo ""
echo "Public key successfully copied to $IP"
echo ""
else
echo "$(cat $ERROR_FILE)"
echo
exit 3
fi
echo ""
done
Αποθηκεύστε το αρχείο και κλείστε το.
Στη συνέχεια, κάντε το σενάριο εκτελέσιμο με την εντολή chmod όπως φαίνεται.
chmod +x ssh-copy.sh
Τώρα εκτελέστε το σενάριο ssh-copy.sh
και καθορίστε το αρχείο δημόσιου κλειδιού σας ως το πρώτο όρισμα όπως φαίνεται στο στιγμιότυπο οθόνης:
./ssh-copy.sh /root/.ssh/prod-rsa.pub
Στη συνέχεια, χρησιμοποιήστε το ssh-agent
για να διαχειριστείτε τα κλειδιά σας, το οποίο διατηρεί το αποκρυπτογραφημένο ιδιωτικό κλειδί σας στη μνήμη και το χρησιμοποιεί για τον έλεγχο ταυτότητας των στοιχείων σύνδεσης. Μετά την εκκίνηση του ssh-agent
, προσθέστε το ιδιωτικό σας κλειδί σε αυτό ως εξής:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/prod_rsa
Συνδεθείτε στον απομακρυσμένο διακομιστή Linux χωρίς κωδικό πρόσβασης
Τώρα μπορείτε να συνδεθείτε σε οποιονδήποτε από τους απομακρυσμένους κεντρικούς υπολογιστές σας χωρίς να παρέχετε κωδικό πρόσβασης για έλεγχο ταυτότητας χρήστη SSH. Με αυτόν τον τρόπο, μπορείτε να αυτοματοποιήσετε τις διαδικασίες μεταξύ διακομιστών.
ssh [email
Αυτό ήταν το μόνο που είχαμε για εσάς! Εάν έχετε κάποια συνεισφορά να κάνετε ιδιαίτερα για τη βελτίωση του σεναρίου φλοιού, ενημερώστε μας μέσω της παρακάτω φόρμας σχολίων.