Ngay cả khi tác nhân lên, nếu các biến môi trường nhất định không được đặt, bạn không có tham chiếu đến tác nhân. Hơn nữa, ngay cả khi tất cả đều ổn, tác nhân và biến, danh tính không được tự động gửi đến tác nhân: đó là một nhiệm vụ ssh-askpass
, chỉ hoạt động trong các phiên X.
Nếu bạn đang sử dụng bash, hãy tạo tệp ~/.bash_profile
có nội dung này:
# 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
sửa đổi tên tệp ~/.ssh/id_dsa
theo nhu cầu của bạn và thêm dòng này vào~/.bash_logout
# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
echo "Killing ssh agent"
ssh-agent -k
fi
Lưu ý cuối cùng: điều này không can thiệp vào phiên gnome, vì trong trường hợp đó chỉ ~/.profile
có nguồn gốc và bạn có thể hưởng lợi từ ssh-askpass
giao diện đồ họa yêu cầu cụm mật khẩu và gửi nó đến ssh-agent
.
ssh-agent
đang chạy hay không:ps -ef | grep '[s]sh-agent'