mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-03-27 03:14:56 +01:00
Instead of hard-coding ssh-add you should use /usr/bin/env so it runs the correct one (for instance if you installed openssh with brew on mac the old version breaks)
79 lines
2.2 KiB
Bash
79 lines
2.2 KiB
Bash
#
|
|
# INSTRUCTIONS
|
|
#
|
|
# To enable agent forwarding support add the following to
|
|
# your .zshrc file:
|
|
#
|
|
# zstyle :omz:plugins:ssh-agent agent-forwarding on
|
|
#
|
|
# To load multiple identities use the identities style, For
|
|
# example:
|
|
#
|
|
# zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
|
|
#
|
|
# To set the maximum lifetime of the identities, use the
|
|
# lifetime style. The lifetime may be specified in seconds
|
|
# or as described in sshd_config(5) (see TIME FORMATS)
|
|
# If left unspecified, the default lifetime is forever.
|
|
#
|
|
# zstyle :omz:plugins:ssh-agent lifetime 4h
|
|
#
|
|
# 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 _plugin__ssh_env
|
|
local _plugin__forwarding
|
|
|
|
function _plugin__start_agent()
|
|
{
|
|
local -a identities
|
|
local lifetime
|
|
zstyle -s :omz:plugins:ssh-agent lifetime lifetime
|
|
|
|
# start ssh-agent and setup environment
|
|
/usr/bin/env ssh-agent ${lifetime:+-t} ${lifetime} | 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 ssh-agent...
|
|
|
|
/usr/bin/env ssh-add $HOME/.ssh/${^identities}
|
|
}
|
|
|
|
# Get the filename to store/lookup the environment from
|
|
if (( $+commands[scutil] )); then
|
|
# It's OS X!
|
|
_plugin__ssh_env="$HOME/.ssh/environment-$(scutil --get ComputerName)"
|
|
else
|
|
_plugin__ssh_env="$HOME/.ssh/environment-$HOST"
|
|
fi
|
|
|
|
# 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
|
|
|
|
elif [ -f "${_plugin__ssh_env}" ]; then
|
|
# Source SSH settings, if applicable
|
|
. ${_plugin__ssh_env} > /dev/null
|
|
ps x | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || {
|
|
_plugin__start_agent;
|
|
}
|
|
else
|
|
_plugin__start_agent;
|
|
fi
|
|
|
|
# tidy up after ourselves
|
|
unfunction _plugin__start_agent
|
|
unset _plugin__forwarding
|
|
unset _plugin__ssh_env
|
|
|