diff options
Diffstat (limited to 'plugins/ssh-agent')
| -rw-r--r-- | plugins/ssh-agent/ssh-agent.plugin.zsh | 65 | 
1 files changed, 52 insertions, 13 deletions
| diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index 0efc4546f..c4e92a1fe 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -1,23 +1,62 @@ -# Based on code from Joseph M. Reagle -# http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html +# +# INSTRUCTIONS +# +#   To enabled agent forwarding support add the following to +#   your .zshrc file: +# +#     zstyle :omz:plugins:ssh-agent agent-forwarding on +# +#   To load multiple identies use the identities style, For +#   example: +# +#     zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github +# +# +# 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 +# -local SSH_ENV=$HOME/.ssh/environment-$HOST +local _plugin__ssh_env=$HOME/.ssh/environment-$HOST +local _plugin__forwarding -function start_agent { -  /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} -  chmod 600 ${SSH_ENV} -  . ${SSH_ENV} > /dev/null -  /usr/bin/ssh-add; +function _plugin__start_agent() +{ +  local -a identities + +  # start ssh-agent and setup environment +  /usr/bin/env ssh-agent | sed 's/^echo/#echo/' > ${_plugin__ssh_env} +  chmod 600 ${_plugin__ssh_env} +  . ${_plugin__ssh_env} > /dev/null + +  # load identies +  zstyle -a :omz:plugins:ssh-agent identities identities  +  echo starting... +  /usr/bin/ssh-add $HOME/.ssh/${^identities}  } -# Source SSH settings, if applicable +# test if agent-forwarding is enabled +zstyle -b :omz:plugins:ssh-agent agent-forwarding _plugin__forwarding +if [[ ${_plugin__forwarding} == "yes" && -n "$SSH_AUTH_SOCK" ]]; then +  # Add a nifty symlink for screen/tmux if agent forwarding +  [[ -L $SSH_AUTH_SOCK ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen -if [ -f "${SSH_ENV}" ]; then -  . ${SSH_ENV} > /dev/null +elif [ -f "${_plugin__ssh_env}" ]; then +  # Source SSH settings, if applicable +  . ${_plugin__ssh_env} > /dev/null    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { -    start_agent; +    _plugin__start_agent;    }  else -  start_agent; +  _plugin__start_agent;  fi +# tidy up after ourselves +unfunction _plugin__start_agent +unset _plugin__forwarding +unset _plugin__ssh_env + | 
