I-set up ang Passwordless SSH Login para sa Multiple Remote Servers Gamit ang Script


Ang SSH Key-based authentication (nailhan usab nga public-key authentication) nagtugot alang sa password-less authentication ug kini mas luwas ug mas maayo nga solusyon kay sa password authentication. Usa ka dakong bentaha sa SSH nga wala’y password nga pag-login, labi na ang seguridad mao nga gitugotan niini ang pag-automate sa lainlaing mga matang sa mga proseso sa cross-server.

Niini nga artikulo, among ipakita kung giunsa paghimo ang usa ka pares nga key sa SSH ug kopyahon ang yawe sa publiko sa daghang mga hilit nga host sa Linux sa usa ka higayon, nga adunay script sa shell.

Paghimo og Bag-ong SSH Key sa Linux

Una, paghimo sa SSH key pair (ang pribado/identity nga yawe nga gigamit sa usa ka kliyente sa SSH sa pag-authenticate sa iyang kaugalingon sa dihang nag-log in sa usa ka hilit nga SSH server ug ang publikong yawe nga gitipigan isip usa ka awtorisadong yawe sa usa ka hilit nga sistema nga nagpadagan sa usa ka SSH server) gamit ang ssh- keygen sugo sama sa mosunod:

# ssh-keygen

Paghimo og Shell Script para sa Mulitple Remote Logins

Sunod, paghimo usa ka script sa shell nga makatabang sa pagkopya sa usa ka publiko nga yawe sa daghang mga hilit nga host sa Linux.

# vim ~/.bin/ssh-copy.sh

Kopyaha ug idikit ang mosunod nga code sa payl (ilisan ang mosunod nga mga variable sumala niana USER_NAME – ang username nga ikonektar, HOST_FILE – usa ka file nga adunay listahan sa mga hostname o IP address , ug ERROR_FILE – usa ka payl aron tipigan ang bisan unsang ssh command errors).

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

I-save ang file ug isira kini.

Dayon himoa ang script nga executable gamit ang chmod command sama sa gipakita.

# chmod +x ssh-copy.sh

Karon padagana ang ssh-copy.sh script ug itakda ang imong public key file isip unang argumento sama sa gipakita sa screenshot:

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

Sunod, gamita ang ssh-agent aron madumala ang imong mga yawe, nga nagkupot sa imong gi-decrypt nga pribadong yawe sa memorya ug gigamit kini sa pag-authenticate sa mga login. Human magsugod sa ssh-agent, idugang ang imong pribadong yawe niini sama sa mosunod:

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

Pag-login sa Remote Linux Server nga walay Password

Karon maka-log in ka sa bisan asa sa imong hilit nga mga host nga walay paghatag og password alang sa SSH user authentication. Niining paagiha, mahimo nimong i-automate ang mga proseso sa cross-server.

# ssh [email 

Mao ra kana ang among naa kanimo! Kung aduna kay (mga) kontribusyon nga himoon ilabina sa pagpaayo sa shell script, ipahibalo kanamo pinaagi sa feedback form sa ubos.