git bash すると ssh-agent を自動で起動

$ vi ~/.bashrc

で.bashrcを編集して

#ssh-agent
eval `ssh-agent`
ssh-add

と追記しておくと、git bash を動かす時に自動で ssh-agent を起動してパスフレーズの入力を一度だけ求められるようになる。git bash が起動している間は何度もパスフレーズを入力する必要はない。 devian のページとか見るとパスフレーズなしで ssh の話が出てるので、案外一人で触るならパスフレーズもなくてもいいのかもしれない。やりたい人は下のURLを参考にでもすれば良いと思う

個人的にはパスフレーズは入れている。あと、パスフレーズを設定しても~/.bash_profilとかにパスフレーズを書いてしまって入力を省略する方法とかもあるらしい。パスフレーズの入力も省略はできるらしいが、折角 SSH にしてもそれじゃ本末転倒な気がするので、一度くらいは打てばいい気がする。

実は上に書いた設定だと ssh-agent はログアウトしても残る。ので、ログアウトする時に終了するように .bash_logout に

eval `ssh-agent -k`

を追記しておく。これをやらないと git bash を動かすたびに ssh-agent のプロセスが増えまくる。

何度も git bash を立ち上げたり消したりするような使い方をする場合は ssh-agent が起動する度にパスフレーズを聞かれる。それが嫌な場合はログアウトしたときに ssh-agent を消さないでおく方法もある。 ssh-agent のプロセスを消さないと起動するたびに Windows のプロセスに残ってしまうので $ vi ~/.bashrc で書き換える内容を下のようなのにしておくと幸せになれる。

#ssh-agent
SSH_AGENT_FILE=$HOME/.ssh-agent
test -f $SSH_AGENT_FILE && source $SSH_AGENT_FILE
if ! ssh-add -l > /dev/null 2>&1; then
    ssh-agent > $SSH_AGENT_FILE
    source $SSH_AGENT_FILE
    ssh-add $HOME/.ssh/id_rsa
fi

個人的にはこっちのが楽なんじゃないかと思ったが、このやり方は色々な方法があるようなので、自分の好きなのを選べばいい気がする。こういう話は私みたいなフォースの暗黒面たる windows に染まっていない詳しそうな人が書いているのを色々見た方が良いと思う。この場合は .bash_logout には何も追記しないで良い。 ssh-agent の多重起動を防ぐので ssh-agent が一つだけになる。ただし、ログアウトしてもプロセスをキルしないので、一度 git bash を立ち上げたら後はログアウトしても ssh-agent が立ち上がった状態になる。そのため2度目の git bash 起動時にはパスフレーズの入力も必要ない。 ssh-agent のプロセスはつけっぱなしになる。プロセスをキルしたい場合は git bash を閉じる前に

$ ssh-agent -k

とすれば ssh-agent のプロセスもキルする事が出来る。この辺の問題は OpenSSH を利用するとかなり改善するらしい。多重起動防止とかがあるので。

*1:フォースの暗黒面たる windows の力も結構なものなので多分 Mac じゃないからじゃなくて ssh-agent の種類で色々違うというか。 OpenSSH じゃないからじゃないかと思った。