SSH_ENV="$HOME/.ssh/environment" KEY="$HOME/.ssh/id_rsa" function start_agent () { ssh-agent -s | sed 's/^echo/#echo/' > "$SSH_ENV" chmod 600 "$SSH_ENV" . "$SSH_ENV" > /dev/null } function add_identities () { ssh-add -l | grep "The agent has no identities" > /dev/null if [ $? -eq 0 ]; then ssh-add $KEY &> /dev/null fi } function is_ssh_agent_pid_valid () { ps -ef | grep $1 | grep -v grep | grep ssh-agent > /dev/null } if [ -n "$SSH_AGENT_PID" ] && is_ssh_agent_pid_valid $SSH_AGENT_PID; then add_identities else if [ -f "$SSH_ENV" ]; then . "$SSH_ENV" > /dev/null fi if ! is_ssh_agent_pid_valid $SSH_AGENT_PID; then start_agent fi add_identities fi