Ρύθμιση σύνδεσης 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 

Αυτό ήταν το μόνο που είχαμε για εσάς! Εάν έχετε κάποια συνεισφορά να κάνετε ιδιαίτερα για τη βελτίωση του σεναρίου φλοιού, ενημερώστε μας μέσω της παρακάτω φόρμας σχολίων.