#!/bin/sh # # Initializes the ssh-agent # # Parameters SSH_AGENT=/usr/bin/ssh-agent SSH_AGENT_ARGS="-s" SSH_ENV="$HOME/.ssh/environment" # Start agent, old implementation #ssh_agent_eval_run() { # eval `$SSH_AGENT $SSH_AGENT_ARGS` &> /dev/null # trap "ps $SSH_AGENT_PID &> /dev/null && kill $SSH_AGENT_PID" 0 #} # Start agent, new implementation # Check http://mah.everybody.org/docs/ssh start_agent() { echo "" > "${SSH_ENV}" chmod 600 "${SSH_ENV}" echo -n "Initialising new SSH agent..." ${SSH_AGENT} ${SSH_AGENT_ARGS} | sed 's/^echo/#echo/' >> "${SSH_ENV}" echo succeeded . "${SSH_ENV}" > /dev/null /usr/bin/ssh-add; if [ -x "/usr/bin/monkeysphere" ]; then /usr/bin/monkeysphere subkey-to-ssh-agent fi } # Old implementation #if [ "$1" == "-f" ]; then # echo "Starting a new ssh-agent..." # ssh_agent_eval_run #elif [ -z "$SSH_AUTH_SOCK" -a -x "$SSH_AGENT" ]; then # ssh_agent_eval_run #fi # New implementation # Check http://mah.everybody.org/docs/ssh if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null #ps ${SSH_AGENT_PID} doesn't work under cywgin ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi