Weboldal keresés

Jelszó nélküli SSH bejelentkezés beállítása több távoli kiszolgálóhoz Script használatával


Az SSH-kulcs alapú hitelesítés (más néven nyilvános kulcsú hitelesítés) jelszó nélküli hitelesítést tesz lehetővé, és biztonságosabb és sokkal jobb megoldás, mint a jelszavas hitelesítés. Az SSH jelszó nélküli bejelentkezés egyik fő előnye, nem is beszélve a biztonságról, hogy lehetővé teszi a különféle szerverek közötti folyamatok automatizálását.

Ebben a cikkben bemutatjuk, hogyan hozhatunk létre SSH-kulcspárt, és hogyan másolhatjuk a nyilvános kulcsot egyszerre több távoli Linux-gazdagépre egy shell-szkript segítségével.

Hozzon létre egy új SSH-kulcsot Linuxban

Először állítsa elő az SSH-kulcspárt (az a privát/identitáskulcs, amellyel az SSH-kliens hitelesíti magát, amikor bejelentkezik egy távoli SSH-kiszolgálóra, és az SSH-kiszolgálót futtató távoli rendszeren engedélyezett kulcsként tárolt nyilvános kulcsot) a ssh-keygen parancsot a következőképpen:

ssh-keygen

Hozzon létre egy Shell-szkriptet több távoli bejelentkezéshez

Ezután hozzon létre egy shell-szkriptet, amely segít a nyilvános kulcsok több távoli Linux-állomásra történő másolásában.

vim ~/.bin/ssh-copy.sh

Másolja ki és illessze be a következő kódot a fájlba (a következő változókat ennek megfelelően cserélje ki: USER_NAME – a csatlakozáshoz használt felhasználónév, HOST_FILE – a gazdagépnevek vagy IP-címek listáját tartalmazó fájl és ERROR_FILE – egy fájl az ssh parancshibák tárolására).

#!/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

Mentse el a fájlt és zárja be.

Ezután tegye a szkriptet végrehajthatóvá a chmod paranccsal az ábrán látható módon.

chmod +x ssh-copy.sh

Most futtassa az ssh-copy.sh parancsfájlt, és adja meg a nyilvános kulcsfájlt első argumentumként a képernyőképen látható módon:

./ssh-copy.sh /root/.ssh/prod-rsa.pub

Ezután az ssh-agent segítségével kezelje a kulcsait, amely a memóriában tárolja a visszafejtett privát kulcsot, és a bejelentkezés hitelesítésére használja. Az ssh-agent elindítása után adja hozzá privát kulcsát az alábbiak szerint:

eval "$(ssh-agent -s)"
ssh-add  ~/.ssh/prod_rsa

Jelentkezzen be a távoli Linux szerverre jelszó nélkül

Mostantól bármelyik távoli gazdagépre bejelentkezhet anélkül, hogy jelszót adna meg az SSH-felhasználó hitelesítéshez. Így automatizálhatja a kiszolgálók közötti folyamatokat.

ssh [email 

Ennyit adtunk neked! Ha bármilyen hozzájárulást szeretne tenni a shell script fejlesztéséhez, tudassa velünk az alábbi visszajelzési űrlapon keresztül.