विकिपीडिया लेख में शायद सबसे अच्छा वर्णन है:
सर्वर का सत्यापन चुनौती-प्रतिक्रिया प्रमाणीकरण पर आधारित है। ssh उपयोगकर्ता नाम और कुंजी के लिए अनुरोध के साथ सर्वर से जुड़ता है। Ssh डेमॉन को अनुरोध मिलता है और प्रमाणीकरण फ़ाइल में संग्रहीत सार्वजनिक कुंजी के आधार पर एक चुनौती वापस भेजता है। ssh एक कुंजी प्रतिक्रिया का निर्माण करने के लिए निजी कुंजी का उपयोग करता है, और इसे कनेक्शन के दूसरे छोर पर प्रतीक्षा sshd को भेजता है। यह निजी कुंजी स्वयं नहीं भेजता है। Ssh डेमॉन प्रमुख प्रतिक्रिया को मान्य करता है, और यदि मान्य है, तो सिस्टम तक पहुँच प्राप्त करता है। ssh- एजेंट SSH कनेक्शन के लिए सुनने वाला सॉकेट बनाकर इसे सरल बनाता है। उपयोगकर्ता बस ssh- एजेंट को शुरू करता है, यह बताता है कि कैसे अपनी चाबियाँ (यदि वे डिफ़ॉल्ट स्थान पर नहीं हैं) को खोजने के लिए, एक बार के आधार पर, उपयोग की जाने वाली प्रत्येक कुंजी के लिए पासफ़्रेज़ में प्रवेश करता है।
विकिपीडिया लेख से फिर से शब्दश:
... ssh- एजेंट एक सॉकेट बनाता है और फिर ssh से कनेक्शन की जाँच करता है। हर कोई जो इस सॉकेट से जुड़ने में सक्षम है, उसकी भी ssh-Agent तक पहुंच है। अनुमतियाँ एक सामान्य लिनक्स या यूनिक्स प्रणाली में सेट की गई हैं। जब एजेंट शुरू होता है, तो यह प्रतिबंधात्मक अनुमतियों के साथ / tmp में एक नई निर्देशिका बनाता है। सॉकेट फ़ोल्डर में स्थित है।
यह आम तौर पर या तो एक प्रणाली या उपयोगकर्ता के आर सी फाइल में रखा है जैसे $HOME/.bashrc
या $HOME/.profile
(बैश के गोले के लिए) ताकि वातावरण चर ssh-agent
पूरी तरह से अपने परिवेश में शामिल करने के लिए सेट करें।
मेरे फेडोरा 14 सिस्टम पर यह X11 सबसिस्टम के हिस्से के रूप में बहुत पहले शुरू होता है। इस फ़ाइल में /etc/X11/xinit/xinitrc-common
:
# Prefix launch of session with ssh-agent if available and not already running.
SSH_AGENT=
if [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then
if [ "x$TMPDIR" != "x" ]; then
SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
else
SSH_AGENT="/usr/bin/ssh-agent"
fi
fi
चर $SSH_AGENT
को अन्य X11 स्टार्ट-अप स्क्रिप्ट में उपयोग किया जाता है जैसे कि /etc/X11/xinit/Xclients
:
exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
इसे यहां शामिल करके, निम्नलिखित पर्यावरण चर को माता-पिता के खोल के हिस्से के रूप में स्थापित किया जा रहा है, इसलिए सभी कांटे वाले बच्चों के पास भी उन्हें होना चाहिए, उदाहरण के लिए:
SSH_AUTH_SOCK=/tmp/ssh-PspRF18958/agent.18958; export SSH_AUTH_SOCK;
SSH_AGENT_PID=18959; export SSH_AGENT_PID;
इसमें थोड़ी और जटिलता है लेकिन संक्षेप में यह मूल रूप से यही है ssh-agent
।
गनोम में उदाहरण के लिए, ssh-agent
वास्तव में एक स्टार्ट-अप एप्लिकेशन के रूप में प्रति उपयोगकर्ता लॉन्च किया जाता है:
टी एल; डॉ
निचला रेखा, ssh-agent
मौजूद है ताकि जब आपकी ssh कुंजियों की आवश्यकता हो, तो आपको उन्हें केवल एक बार अपने पासफ़्रेज़ के साथ अनलॉक करना होगा (यह मानते हुए कि उनके पास एक है), और तब से वे स्मृति (RAM) में उनके डिक्रिप्टेड रूप में उपलब्ध हैं।