diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index ce0d645c1..a2912e92f 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -10,14 +10,17 @@ function start_agent { /usr/bin/ssh-add; } -# Source SSH settings, if applicable - -if [ -f "${SSH_ENV}" ]; then - . ${SSH_ENV} > /dev/null - ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { - start_agent; - } +if [ -n "$SSH_AUTH_SOCK" ]; then + # Add a nifty symlink for screen/tmux if we're doing agent forwarding. + test -L $SSH_AUTH_SOCK || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen else - start_agent; + # Source SSH settings, if applicable. + if [ -f "${SSH_ENV}" ]; then + . ${SSH_ENV} > /dev/null + ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { + start_agent; + } + else + start_agent; + fi fi -