plugins/ssh-agent/ssh-agent.plugin.zsh
35b879a1
 #
 # INSTRUCTIONS
 #
 #   To enabled agent forwarding support add the following to
 #   your .zshrc file:
 #
 #     zstyle :omz:plugins:ssh-agent agent-forwarding on
 #
40b7f209
 #   To load multiple identies use the identities style, For
 #   example:
 #
 #     zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github
 #
35b879a1
 #
 # CREDITS
 #
 #   Based on code from Joseph M. Reagle
 #   http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html
 #
 #   Agent forwarding support based on ideas from
 #   Florent Thoumie and Jonas Pfenniger
 #
62cea310
 
35b879a1
 local _plugin__ssh_env=$HOME/.ssh/environment-$HOST
 local _plugin__forwarding
62cea310
 
35b879a1
 function _plugin__start_agent()
 {
40b7f209
   local -a identities
 
   # start ssh-agent and setup environment
35b879a1
   /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env}
   chmod 600 ${_plugin__ssh_env}
   . ${_plugin__ssh_env} > /dev/null
40b7f209
 
   # load identies
   zstyle -a :omz:plugins:ssh-agent identities identities 
   echo starting...
   /usr/bin/ssh-add $HOME/.ssh/${^identities}
62cea310
 }
 
35b879a1
 # test if agent-forwarding is enabled
 zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding
40b7f209
 if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then
   # Add a nifty symlink for screen/tmux if agent forwarding
35b879a1
   [[ -L $SSH_AUTH_SOCK ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen
62cea310
 
35b879a1
 elif [ -f "${_plugin__ssh_env}" ]; then
   # Source SSH settings, if applicable
   . ${_plugin__ssh_env} > /dev/null
d647a9b2
   ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
35b879a1
     _plugin__start_agent;
d647a9b2
   }
62cea310
 else
35b879a1
   _plugin__start_agent;
62cea310
 fi
 
35b879a1
 # tidy up after ourselves
 unfunction _plugin__start_agent
 unset _plugin__forwarding
 unset _plugin__ssh_env