Ověřování založené na klíči SSH (také známé jako ověřování veřejným klíčem) umožňuje ověřování bez hesla a je to bezpečnější a mnohem lepší řešení než ověřování pomocí hesla. 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.
Související čtení :Jak zabezpečit a zpevnit server OpenSSHV 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 shell.
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í případných 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 [email protected]$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é vytvořte spustitelný skript pomocí chmod příkaz, jak je znázorněno.
# chmod +x ssh-copy.sh
Nyní spusťte ssh-copy.sh
skript a zadejte svůj soubor veřejného klíče jako první argument, jak je znázorněno na snímku obrazovky:
# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

Dále použijte ssh-agent
pro správu vašich klíčů, 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
, přidejte do něj svůj soukromý klíč následovně:
# eval "$(ssh-agent -s)" # ssh-add ~/.ssh/prod_rsa

Přihlaste se ke vzdálenému serveru Linux 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 autentizaci uživatele SSH. Tímto způsobem můžete automatizovat procesy mezi servery.
# ssh [email protected]

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