Last active
February 3, 2021 13:00
-
-
Save alisade/d6271026100599f67e6738b47c9aa337 to your computer and use it in GitHub Desktop.
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
source ~/ssh-agent.sh | |
sshagent_init |
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
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 | |
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 | |
# 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 ; 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` | |
fi | |
# Clean up | |
unset AGENTFOUND | |
unset agentsocket | |
# 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