SINT - BASH script for ssh-agent session management in Cygwin
In.bashrc:if [ -f "$HOME/.bash_sshagent" ]; then . "$HOME/.bash_sshagent" fi
preparations:
mkdir "$HOME/tmp/ssh-agent" && chmod go-rwx -R "$HOME/tmp/ssh-agent"
.bash_sshagent (updated @ 2013-10-23)# ssh-agent SSH_AUTH_SOCK="$HOME/tmp/ssh-agent/sock" SSH_AGENT_VARS="$HOME/tmp/ssh-agent/vars" if ! [ -S "$SSH_AUTH_SOCK" ]; then ssh-agent -a "$SSH_AUTH_SOCK" -s > "$SSH_AGENT_VARS" else if [ -z "$(ps | awk '/ssh-agent/ {print $1}')" ]; then rm "$SSH_AUTH_SOCK" ssh-agent -a "$SSH_AUTH_SOCK" -s > "$SSH_AGENT_VARS" fi fi eval `cat "$SSH_AGENT_VARS"` > /dev/null
.bash_sshagent (old @ 2012-04-10)# ssh-agent SSH_AUTH_SOCK="$HOME/tmp/ssh-agent/sock" if ! [ -S "$SSH_AUTH_SOCK" ]; then eval `ssh-agent -a $SSH_AUTH_SOCK` else if [ "$(ps | grep "ssh-agent" | wc -l)" -eq "0" ]; then rm "$SSH_AUTH_SOCK" eval `ssh-agent -a $SSH_AUTH_SOCK` fi SSH_AGENT_PID=$(ps | grep ssh-agent | head -n 1 | awk '{ print $1 }') export SSH_AUTH_SOCK export SSH_AGENT_PID fi
Description
This is how I configured SSH keys management with ssh-agent in Cygwin environment (installed into Microsoft Windows 7).
At first it will check if file defined by variable
$SSH_AUTH_SOCK exists and if is it socket. If is that true it will try to determine ssh-agent process ID (PID) and it will export it as $SSH_AGENT_PID with $SSH_AUTH_SOCK variable.$SSH_AUTH_SOCK variable is always set to "$HOME/tmp/ssh-agent/sock" and ssh-agent is forced by -a parameter to create socket always at same place (set in $SSH_AUTH_SOCK).If
ssh-agent isn't running it will start a new instance.If multiple instances of
ssh-agent are running it will get PID only of first one script gets. The best way how to handle this situation is to kill all ssh-agent instances. Then new bash instance will start the new instance of ssh-agent for you.date: Fri, 20 Apr 2012 07:14:02 +0000
link: CyberAsylum.eu/sint-bash-script-for-sshagent-session-management-in-cygwin
