-
-
Save jgrossophoff/6a1820205c377bae14b4a9dc7fa7083e to your computer and use it in GitHub Desktop.
Add SSH keys
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
typeset _agent_forwarding _ssh_env_cache | |
function _start_agent() { | |
local lifetime | |
local -a identities | |
# start ssh-agent and setup environment | |
zstyle -s :omz:plugins:ssh-agent lifetime lifetime | |
ssh-agent -s ${lifetime:+-t} ${lifetime} | sed 's/^echo/#echo/' >! $_ssh_env_cache | |
chmod 600 $_ssh_env_cache | |
. $_ssh_env_cache > /dev/null | |
# load identies | |
zstyle -a :omz:plugins:ssh-agent identities identities | |
echo starting ssh-agent... | |
ssh-add $(ls ~/.ssh/*.pub | ruby -e 'ARGF.each do |path|; puts path.sub ".pub", ""; end;') | |
} | |
# Get the filename to store/lookup the environment from | |
_ssh_env_cache="$HOME/.ssh/environment-$SHORT_HOST" | |
# test if agent-forwarding is enabled | |
zstyle -b :omz:plugins:ssh-agent agent-forwarding _agent_forwarding | |
if [[ $_agent_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 "$_ssh_env_cache" ]]; then | |
# Source SSH settings, if applicable | |
. $_ssh_env_cache > /dev/null | |
ps x | grep ssh-agent | grep -q $SSH_AGENT_PID || { | |
_start_agent | |
} | |
else | |
_start_agent | |
fi | |
# tidy up after ourselves | |
unset _agent_forwarding _ssh_env_cache | |
unfunction _start_agent |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment