GNU/Linux >> Znalost Linux >  >> Ubuntu

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

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 OpenSSH

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 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.


Ubuntu
  1. Jednoduchý BASH skript pro instalaci serveru Ubuntu

  2. Jak nastavit přihlášení SSH bez hesla v Linuxu

  3. Jak nastavit klíče SSH pro přihlášení k SSH „bez hesla“ na CentOS/RHEL

  1. Jak nastavit SSH přihlášení bez hesla

  2. SSH bez hesla pomocí párů veřejného a soukromého klíče

  3. Jak nastavit klíče SSH pro přihlášení pomocí „veřejného/soukromého klíče“ SSH v systému Linux

  1. Jak nastavit přihlášení k SSH bez hesla

  2. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  3. Použití stejného soukromého klíče SSH na více počítačích