SSH एकल साइन-ऑन आमतौर पर सार्वजनिक कुंजी प्रमाणीकरण और प्रमाणीकरण एजेंट के साथ प्राप्त किया जाता है। आप आसानी से अपने परीक्षण VM कुंजी को मौजूदा स्रोत एजेंट में जोड़ सकते हैं (नीचे उदाहरण देखें)। अन्य तरीके जैसे कि gssapi / kerberos मौजूद हैं, लेकिन अधिक जटिल हैं।
sshpass
उन स्थितियों में जहाँ password
केवल प्रमाणीकरण विधि उपलब्ध है, sshpass का उपयोग स्वतः पासवर्ड दर्ज करने के लिए किया जा सकता है। कृपया मैन पेज की SECURITY CONSIDERATIONS अनुभाग पर विशेष ध्यान दें । सभी तीन विकल्पों में, पासवर्ड किसी बिंदु पर प्लेनटेक्स्ट में दिखाई या संग्रहीत होता है :
अनाम पाइप (sshpass द्वारा अनुशंसित)
# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host
# Close the pipe when done
exec 3>&-
यकीनन यह काफी बोझिल है, यकीनन प्रोग्रामिंग लैंग्वेजेज से आसान है। पासवर्ड लिखे जाने से पहले एक और प्रक्रिया आपके पाइप / एफडी से जुड़ी हो सकती है। अवसर की खिड़की आपकी प्रक्रियाओं या रूट तक काफी कम और सीमित है।
वातावरण विविधता
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
जब आप sshpass चल रहा होता है तब आप और रूट आपकी प्रक्रिया के पर्यावरण चर (यानी आपका पासवर्ड) पढ़ सकते हैं cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
। अवसर की खिड़की बहुत लंबी है लेकिन फिर भी आपकी स्वयं की प्रक्रियाओं या जड़ तक ही सीमित है, अन्य उपयोगकर्ताओं के लिए नहीं।
कमांड-लाइन तर्क (कम से कम सुरक्षित)
sshpass -p my_secret_password ssh user@host
यह सुविधाजनक लेकिन कम सुरक्षित है जैसा कि मैन पेज में वर्णित है। कमांड लाइन तर्क सभी उपयोगकर्ताओं (जैसे ps -ef | grep sshpass
) को दिखाई देते हैं । sshpass तर्क को छिपाने का प्रयास करता है, लेकिन अभी भी एक विंडो है, जिसके दौरान सभी उपयोगकर्ता आपके पासवर्ड को तर्क द्वारा पारित देख सकते हैं।
पक्षीय लेख
अपने बैश सेट HISTCONTROL चर करने के लिए ignorespace
या ignoreboth
और एक अंतरिक्ष के साथ अपने संवेदनशील आदेशों लगा दें। वे इतिहास में सहेजे नहीं जाएंगे।
SSH सार्वजनिक कुंजी प्रमाणीकरण
# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host
पासफ़्रेज़ बहुत महत्वपूर्ण है। निजी कुंजी फ़ाइल प्राप्त करने वाला कोई भी व्यक्ति पासफ़्रेज़ के बिना इसका उपयोग नहीं कर सकेगा।
SSH प्रमाणीकरण एजेंट सेट करें
# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)
हमेशा की तरह कनेक्ट करें
ssh user@host
लाभ यह है कि आपकी निजी कुंजी एन्क्रिप्ट की गई है और आपको केवल एक बार (इसके अलावा सुरक्षित इनपुट विधि के माध्यम से) अपना पासफ़्रेज़ दर्ज करने की आवश्यकता है।