今までのやり方
.bashrcにこう書いていた。
eval `ssh-agent`
ssh-add
ssh-agentはbashを閉じても死なないので、このやり方だと、bashを開く度にssh-agentのプロセスが増殖してしまう。
解決方法
ssh-agentの出力をファイルに吐き出して、使いまわす
Windows版Gitの場合
- start-ssh-agent.bat(ssh-agent起動スクリプト。スタートアップ時などに呼び出せばいい)
set git="C:\Program Files\Git\bin\sh.exe"
%git% --norc -c "/bin/ps | /bin/grep -q ssh-agent && /bin/ps | /bin/grep ssh-agent | /bin/gawk '{print $1}' | /bin/xargs /bin/kill"
%git% --norc -c "/bin/mkdir -p /var && /bin/ssh-agent > /var/ssh-agent.out"
- .bashrc
eval `cat /var/ssh-agent.out`
ssh-add
Linuxの場合
※Windows版と内容はまったく同じ。むしろこっちのほうがシンプル。
- start-ssh-agent.sh(ssh-agent起動スクリプト。スタートアップ時などに呼び出せばいい)
ps ax | awk '$5 ~ /^ssh-agent/{print "kill "$1}' | sh
ssh-agent > /var/ssh-agent.out
- .bashrc
eval `cat /var/ssh-agent.out`
ssh-add