Opsæt SSH-login uden adgangskode til flere eksterne servere ved hjælp af script
SSH-nøglebaseret godkendelse (også kendt som offentlig nøgle-godkendelse) giver mulighed for adgangskodeløs godkendelse, og det er en mere sikker og en meget bedre løsning end adgangskodegodkendelse. En stor fordel ved SSH-adgangskodeløst login, endsige sikkerhed er, at det giver mulighed for automatisering af forskellige former for tværserverprocesser.
I denne artikel vil vi demonstrere, hvordan du opretter et SSH-nøglepar og kopierer den offentlige nøgle til flere eksterne Linux-værter på én gang med et shell-script.
Opret en ny SSH-nøgle i Linux
Generer først SSH-nøgleparet (den private/identitetsnøgle, som en SSH-klient bruger til at godkende sig selv, når han logger på en ekstern SSH-server, og den offentlige nøgle, der er gemt som en autoriseret nøgle på et eksternt system, der kører en SSH-server) ved hjælp af ssh- keygen kommando som følger:
# ssh-keygen
Opret et Shell Script til Mulitple Remote Logins
Dernæst skal du oprette et shell-script, der hjælper med at kopiere en offentlig nøgle til flere eksterne Linux-værter.
# vim ~/.bin/ssh-copy.sh
Kopier og indsæt følgende kode i filen (udskift følgende variabler i overensstemmelse hermed USER_NAME
- det brugernavn, der skal forbindes til, HOST_FILE
- en fil, der indeholder listen over værtsnavne eller IP-adresser , og ERROR_FILE
- en fil til at gemme eventuelle ssh-kommandofejl).
#!/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 $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
Gem filen, og luk den.
Gør derefter scriptet eksekverbart med chmod-kommandoen som vist.
# chmod +x ssh-copy.sh
Kør nu ssh-copy.sh
scriptet og angiv din offentlige nøglefil som det første argument som vist på skærmbilledet:
# ./ssh-copy.sh /root/.ssh/prod-rsa.pub
Brug derefter ssh-agent
til at administrere dine nøgler, som holder din dekrypterede private nøgle i hukommelsen og bruger den til at godkende login. Når du har startet ssh-agent
, skal du tilføje din private nøgle til den som følger:
# eval "$(ssh-agent -s)" # ssh-add ~/.ssh/prod_rsa
Log ind på Remote Linux Server uden adgangskode
Nu kan du logge ind på en hvilken som helst af dine eksterne værter uden at angive en adgangskode til SSH-brugergodkendelse. På denne måde kan du automatisere processer på tværs af servere.
# ssh [email
Det er alt, hvad vi havde til dig! Hvis du har noget eller flere bidrag til at forbedre især shell-scriptet, så lad os det vide via feedbackformularen nedenfor.