Fix ssh-agent handling in .bash_profile

This commit is contained in:
Darren 'Tadgy' Austin 2016-10-04 22:07:20 +01:00
commit 5f01569d43

View file

@ -35,31 +35,37 @@ unset _PLATFORM
# SSH agent.
hash ssh-add ssh-agent >/dev/null 2>&1 && {
if [ ! -z "$SSH_AGENT_PID" ] && [ ! -z "$SSH_AUTH_SOCK" ]; then
if [ ! -z "$SSH_AUTH_SOCK" ]; then
ssh-add -l >/dev/null 2>&1
if (( $? < 2 )); then
echo
echo "Connected to forwarded ssh-agent at PID $SSH_AGENT_PID."
elif [ -z "$SSH_AGENT_PID" ] || [ -z "$SSH_AUTH_SOCK" ]; then
echo "Connected to forwarded ssh-agent ($SSH_AGENT_PID)."
else
echo
echo "Problem connecting to forwarded ssh-agent!"
false
fi
else
. ~/.ssh/agent 2>/dev/null
if [ -z "$SSH_AGENT_PID" ] || ! pgrep -u "$USER" -f "$(hash -t ssh-agent)" | grep "^$SSH_AGENT_PID$" >/dev/null; then
ssh-add -l >/dev/null 2>&1
if (( $? < 2 )); then
echo
echo "Connected to local ssh-agent at ($SSH_AGENT_PID)."
else
if ssh-agent -s | sed -e '/^echo/ d' >~/.ssh/agent; then
. ~/.ssh/agent
if ! ssh-add -l >/dev/null 2>&1; then
ssh-add -l >/dev/null 2>&1
if (( $? < 2 )); then
alias ssh='ssh-add -l >/dev/null 2>&1 && unalias ssh || { ssh-add && unalias ssh; }; ssh'
fi
echo
echo "Started new local ssh-agent at PID $SSH_AGENT_PID."
else
echo
echo "Failed to start local ssh-agent!"
false
echo "Problem connecting to local ssh-agent!"
fi
else
echo
echo "Connected to local ssh-agent at PID $SSH_AGENT_PID."
echo "Failed to start local ssh-agent!"
fi
fi
fi
}