Sekalipun agen naik, jika variabel lingkungan tertentu tidak disetel, Anda tidak memiliki referensi ke agen. Selain itu, bahkan jika itu semua ok, agen dan variabel, identitas tidak secara otomatis dikirim ke agen: itu adalah tugas ssh-askpass
, hanya bekerja dalam sesi X.
Jika Anda menggunakan bash, buat file ~/.bash_profile
dengan konten ini:
# 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
modifikasi nama file ~/.ssh/id_dsa
sesuai kebutuhan Anda, dan tambahkan baris ini ke~/.bash_logout
# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
echo "Killing ssh agent"
ssh-agent -k
fi
Catatan terakhir: ini tidak mengganggu sesi gnome, karena dalam kasus ini hanya ~/.profile
bersumber, dan Anda bisa mendapatkan manfaat dari ssh-askpass
antarmuka grafis yang meminta frasa sandi dan mengirimkannya ke ssh-agent
.
ssh-agent
berjalan:ps -ef | grep '[s]sh-agent'