Last active
November 30, 2017 10:06
-
-
Save h4de5/08318a4cc38f8520c3c33af9c2fc8a0c to your computer and use it in GitHub Desktop.
OUTDATED - Shares the same `ssh-agent` among multiple Cygwin terminals. Source: http://superuser.com/a/141241
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
# THERE IS NOW A BETTER WAY TO DO THIS - SEE wsl-ssh-pageant | |
function sshagent_findsockets { | |
find /tmp -uid $(id -u) -type s -name agent.\* 2>/dev/null | |
} | |
function sshagent_testsocket { | |
if [ ! -x "$(which ssh-add)" ] ; then | |
echo "ssh-add is not available; agent testing aborted" | |
return 1 | |
fi | |
if [ X"$1" != X ] ; then | |
export SSH_AUTH_SOCK=$1 | |
fi | |
if [ X"$SSH_AUTH_SOCK" = X ] ; then | |
return 2 | |
fi | |
if [ -S $SSH_AUTH_SOCK ] ; then | |
ssh-add -l > /dev/null | |
if [ $? = 2 ] ; then | |
echo "Socket $SSH_AUTH_SOCK is dead! Deleting!" | |
rm -f $SSH_AUTH_SOCK | |
return 4 | |
elif [ $? = 1 ] ; then | |
echo "Socket $SSH_AUTH_SOCK is empty!" | |
return 5 | |
else | |
echo "Found ssh-agent $SSH_AUTH_SOCK" | |
return 0 | |
fi | |
else | |
echo "$SSH_AUTH_SOCK is not a socket!" | |
return 3 | |
fi | |
} | |
function sshagent_init { | |
# ssh agent sockets can be attached to a ssh daemon process or an | |
# ssh-agent process. | |
AGENTFOUND=0 | |
workingsocket="" | |
# Attempt to find and use the ssh-agent in the current environment | |
if sshagent_testsocket ; then AGENTFOUND=1 ; fi | |
# If there is no agent in the environment, search /tmp for | |
# possible agents to reuse before starting a fresh ssh-agent | |
# process. | |
if [ $AGENTFOUND = 0 ] ; then | |
for agentsocket in $(sshagent_findsockets) ; do | |
#if [ $AGENTFOUND != 0 ] ; then break ; fi | |
if sshagent_testsocket $agentsocket ; then | |
AGENTFOUND=1 | |
workingsocket=$agentsocket | |
fi | |
done | |
fi | |
# If at this point we still haven't located an agent, it's time to | |
# start a new one | |
if [ $AGENTFOUND = 0 ] ; then | |
eval `ssh-agent` | |
else | |
sshagent_testsocket $workingsocket | |
fi | |
# Clean up | |
unset AGENTFOUND | |
unset agentsocket | |
unset workingsocket | |
# Finally, show what keys are currently in the agent | |
ssh-add -l | |
} | |
alias sagent="sshagent_init" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment