സ്uക്രിപ്റ്റ് ഉപയോഗിക്കുന്ന ഒന്നിലധികം വിദൂര സെർവറുകൾക്കായി പാസ്uവേഡ് ഇല്ലാത്ത SSH ലോഗിൻ സജ്ജീകരിക്കുക


എസ്എസ്എച്ച് കീ അടിസ്ഥാനമാക്കിയുള്ള പ്രാമാണീകരണം (പബ്ലിക്-കീ പ്രാമാണീകരണം എന്നും അറിയപ്പെടുന്നു) പാസ്uവേഡ് കുറഞ്ഞ പ്രാമാണീകരണത്തെ അനുവദിക്കുന്നു, ഇത് പാസ്uവേഡ് പ്രാമാണീകരണത്തേക്കാൾ കൂടുതൽ സുരക്ഷിതവും മികച്ച പരിഹാരവുമാണ്. എസ്uഎസ്uഎച്ച് പാസ്uവേഡ്-ലെസ് ലോഗിൻ-ന്റെ ഒരു പ്രധാന നേട്ടം, വിവിധ തരത്തിലുള്ള ക്രോസ്-സെർവർ പ്രക്രിയകളുടെ ഓട്ടോമേഷൻ അനുവദിക്കുന്നു എന്നതാണ് സുരക്ഷ.

ഈ ലേഖനത്തിൽ, എങ്ങനെ ഒരു SSH കീ ജോടി സൃഷ്ടിക്കാമെന്നും ഷെൽ സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒന്നിലധികം റിമോട്ട് ലിനക്സ് ഹോസ്റ്റുകളിലേക്ക് പൊതു കീ പകർത്തുന്നത് എങ്ങനെയെന്നും ഞങ്ങൾ കാണിക്കും.

Linux-ൽ ഒരു പുതിയ SSH കീ സൃഷ്ടിക്കുക

ആദ്യം, SSH കീ ജോഡി (വിദൂര എസ്എസ്എച്ച് സെർവറിലേക്ക് ലോഗിൻ ചെയ്യുമ്പോൾ ഒരു എസ്എസ്എച്ച് ക്ലയന്റ് സ്വയം പ്രാമാണീകരിക്കാൻ ഉപയോഗിക്കുന്ന സ്വകാര്യ/ഐഡന്റിറ്റി കീയും ഒരു എസ്എസ്എച്ച് സെർവറിൽ പ്രവർത്തിക്കുന്ന റിമോട്ട് സിസ്റ്റത്തിൽ അംഗീകൃത കീയായി സംഭരിച്ചിരിക്കുന്ന പൊതു കീയും) ssh- ഉപയോഗിച്ച് ജനറേറ്റുചെയ്യുക. കീജെൻ കമാൻഡ് ഇപ്രകാരമാണ്:

# ssh-keygen

മൾട്ടിപ്പിൾ റിമോട്ട് ലോഗിനുകൾക്കായി ഒരു ഷെൽ സ്ക്രിപ്റ്റ് സൃഷ്ടിക്കുക

അടുത്തതായി, ഒന്നിലധികം റിമോട്ട് ലിനക്സ് ഹോസ്റ്റുകളിലേക്ക് ഒരു പൊതു കീ പകർത്താൻ സഹായിക്കുന്ന ഒരു ഷെൽ സ്ക്രിപ്റ്റ് സൃഷ്ടിക്കുക.

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

ഫയലിൽ ഇനിപ്പറയുന്ന കോഡ് പകർത്തി ഒട്ടിക്കുക (അതനുസരിച്ച് ഇനിപ്പറയുന്ന വേരിയബിളുകൾ മാറ്റിസ്ഥാപിക്കുക USER_NAME – കണക്റ്റുചെയ്യാനുള്ള ഉപയോക്തൃനാമം, HOST_FILE - ഹോസ്റ്റ് നെയിമുകളുടെയോ IP വിലാസങ്ങളുടെയോ ലിസ്റ്റ് അടങ്ങുന്ന ഒരു ഫയൽ , കൂടാതെ ERROR_FILE – ഏതെങ്കിലും 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

ഫയൽ സംരക്ഷിച്ച് അത് അടയ്ക്കുക.

തുടർന്ന് കാണിച്ചിരിക്കുന്നതുപോലെ chmod കമാൻഡ് ഉപയോഗിച്ച് സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ടബിൾ ആക്കുക.

# chmod +x ssh-copy.sh

ഇപ്പോൾ ssh-copy.sh സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുക, സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ പൊതു കീ ഫയൽ ആദ്യത്തെ ആർഗ്യുമെന്റായി വ്യക്തമാക്കുക:

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

അടുത്തതായി, നിങ്ങളുടെ കീകൾ നിയന്ത്രിക്കാൻ ssh-agent ഉപയോഗിക്കുക, അത് നിങ്ങളുടെ ഡീക്രിപ്റ്റ് ചെയ്ത സ്വകാര്യ കീ മെമ്മറിയിൽ സൂക്ഷിക്കുകയും ലോഗിനുകൾ പ്രാമാണീകരിക്കാൻ അത് ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ssh-agent ആരംഭിച്ചതിന് ശേഷം, ഇനിപ്പറയുന്ന രീതിയിൽ നിങ്ങളുടെ സ്വകാര്യ കീ ചേർക്കുക:

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

പാസ്uവേഡ് ഇല്ലാതെ റിമോട്ട് ലിനക്സ് സെർവറിലേക്ക് ലോഗിൻ ചെയ്യുക

SSH ഉപയോക്തൃ ആധികാരികതയ്uക്കായി ഒരു പാസ്uവേഡ് നൽകാതെ തന്നെ നിങ്ങൾക്ക് ഇപ്പോൾ നിങ്ങളുടെ ഏതെങ്കിലും വിദൂര ഹോസ്റ്റുകളിലേക്ക് ലോഗിൻ ചെയ്യാൻ കഴിയും. ഈ രീതിയിൽ, നിങ്ങൾക്ക് ക്രോസ്-സെർവർ പ്രക്രിയകൾ ഓട്ടോമേറ്റ് ചെയ്യാൻ കഴിയും.

# ssh [email protected]

ഞങ്ങൾക്ക് നിങ്ങൾക്കായി ഉണ്ടായിരുന്നത് അത്രമാത്രം! ഷെൽ സ്ക്രിപ്റ്റ് മെച്ചപ്പെടുത്തുന്നതിന് നിങ്ങൾക്ക് എന്തെങ്കിലും സംഭാവന(കൾ) ഉണ്ടെങ്കിൽ, ചുവടെയുള്ള ഫീഡ്ബാക്ക് ഫോം വഴി ഞങ്ങളെ അറിയിക്കുക.