भले ही एजेंट ऊपर है, अगर कुछ निश्चित वातावरण चर सेट नहीं हैं, तो आपके पास एजेंट का कोई संदर्भ नहीं है। इसके अलावा, भले ही यह सब ठीक है, एजेंट और चर, पहचान को स्वचालित रूप से एजेंट को नहीं भेजा जाता है: यह ssh-askpassकेवल एक्स सत्र में काम करने के लिए एक कार्य है ।
यदि आप बैश का उपयोग कर रहे हैं, तो ~/.bash_profileइस सामग्री के साथ फाइल बनाएं :
# File: ~/.bash_profile
# source ~/.profile, if available
if [[ -r ~/.profile ]]; then
. ~/.profile
fi
# start agent and set environment variables, if needed
agent_started=0
if ! env | grep -q SSH_AGENT_PID >/dev/null; then
echo "Starting ssh agent"
eval $(ssh-agent -s)
agent_started=1
fi
# ssh become a function, adding identity to agent when needed
ssh() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/ssh "$@"
}
export -f ssh
# another example: git
git() {
if ! ssh-add -l >/dev/null 2>&-; then
ssh-add ~/.ssh/id_dsa
fi
/usr/bin/git "$@"
}
export -f git
~/.ssh/id_dsaअपनी आवश्यकताओं के बाद फ़ाइल नाम को संशोधित करें , और इस लाइन को इसमें जोड़ें~/.bash_logout
# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
echo "Killing ssh agent"
ssh-agent -k
fi
एक अंतिम नोट: यह एक सूक्ति सत्र में हस्तक्षेप नहीं करता है, क्योंकि उस स्थिति में केवल ~/.profileखट्टा होता है, और आप ssh-askpassग्राफ़िकल इंटरफ़ेस से लाभ उठा सकते हैं जो पासफ़्रेज़ के लिए पूछते हैं और इसे भेजते हैं ssh-agent।
ssh-agentचल रहा है:ps -ef | grep '[s]sh-agent'