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.