Vyhledávání na webu

Nastavení přihlášení SSH bez hesla pro více vzdálených serverů pomocí skriptu


Autentizace založená na klíči SSH (také známá jako autentizace veřejným klíčem) umožňuje autentizaci bez hesla a je to bezpečnější a mnohem lepší řešení než ověřování heslem. Jednou z hlavních výhod přihlašování bez hesla SSH, nemluvě o zabezpečení, je to, že umožňuje automatizaci různých druhů procesů mezi servery.

V tomto článku si ukážeme, jak vytvořit pár klíčů SSH a zkopírovat veřejný klíč na více vzdálených hostitelů Linuxu najednou pomocí skriptu shellu.

Vytvořte nový klíč SSH v systému Linux

Nejprve vygenerujte pár klíčů SSH (soukromý/identitní klíč, který klient SSH používá k autentizaci při přihlašování ke vzdálenému serveru SSH a veřejný klíč uložený jako autorizovaný klíč na vzdáleném systému se serverem SSH) pomocí ssh-keygen příkaz takto:

ssh-keygen

Vytvořte skript Shell pro vícenásobné vzdálené přihlášení

Dále vytvořte skript shellu, který pomůže při kopírování veřejného klíče na více vzdálených hostitelů Linuxu.

vim ~/.bin/ssh-copy.sh

Zkopírujte a vložte následující kód do souboru (následující proměnné nahraďte odpovídajícím způsobem USER_NAME – uživatelské jméno, ke kterému se chcete připojit, HOST_FILE – soubor, který obsahuje seznam názvů hostitelů nebo IP adres a ERROR_FILE – soubor pro uložení jakýchkoli chyb příkazů 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

Uložte soubor a zavřete jej.

Poté udělejte skript spustitelný pomocí příkazu chmod, jak je znázorněno na obrázku.

chmod +x ssh-copy.sh

Nyní spusťte skript ssh-copy.sh a jako první argument zadejte svůj soubor veřejného klíče, jak je znázorněno na snímku obrazovky:

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

Dále ke správě klíčů použijte ssh-agent, který uchovává váš dešifrovaný soukromý klíč v paměti a používá jej k ověřování přihlášení. Po spuštění ssh-agent do něj přidejte svůj soukromý klíč následovně:

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

Přihlaste se ke vzdálenému Linux serveru bez hesla

Nyní se můžete přihlásit k libovolnému ze svých vzdálených hostitelů, aniž byste museli zadat heslo pro ověřování uživatele SSH. Tímto způsobem můžete automatizovat procesy mezi servery.

ssh [email 

To je vše, co jsme pro vás měli! Máte-li nějaký příspěvek (příspěvky), který byste přispěli zejména ke zlepšení skriptu shellu, dejte nám vědět prostřednictvím formuláře pro zpětnou vazbu níže.