भले ही एजेंट ऊपर है, अगर कुछ निश्चित वातावरण चर सेट नहीं हैं, तो आपके पास एजेंट का कोई संदर्भ नहीं है। इसके अलावा, भले ही यह सब ठीक है, एजेंट और चर, पहचान को स्वचालित रूप से एजेंट को नहीं भेजा जाता है: यह 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'