Git for WindowsのGit Bash上で、SSH接続でリモートリポジトリ操作を行う際、毎回SSH鍵のパスフレーズ入力しなければならず、面倒だなぁと思っていました。
そこで、
こんなことをつぶやいたら、
と、お叱りを受けたので調べました。
ssh-agent、ssh-addを用いて一度だけパスフレーズを入力する
調べてみると、教えていただいた通りssh-agent、ssh-addコマンドを使うことで、対応できそうです。
まず、ssh-agentを実行すると、次のような値が戻されます。
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-dACAlw5972/agent.5972; export SSH_AUTH_SOCK;
SSH_AGENT_PID=6496; export SSH_AGENT_PID;
echo Agent pid 6496;
この結果をevalコマンドに渡して、環境変数に登録します。
$ eval `ssh-agent`
Agent pid 6700
$ echo $SSH_AUTH_SOCK
/tmp/ssh-pTngQt1572/agent.1572
$ echo $SSH_AGENT_PID
6700
最後に、ssh-addコマンドを実行して、パスフレーズを入力すれば、このGit Bashのセッションの間は、パスフレーズ入力を省略できるようになります。
$ ssh-add
Enter passphrase for /c/Users/takano-s/.ssh/id_rsa:
Identity added: /c/Users/takano-s/.ssh/id_rsa (/c/Users/takano-s/.ssh/id_rsa)
Git Bash起動時にssh-agent登録、ssh-add実行を行う
どうせなら、Git Bash起動時に上記コマンドを実行してしまえば、あとが楽になります。そんな時は、みんな大好き.bashrcですよね。
~/.bashrc(%UserProfile%\.bashrc)の最後に、次のように上記コマンドを追加してしまいます。
#ssh-agent
eval `ssh-agent`
ssh-add
すると、Git Bashを起動したタイミングでパスフレーズ入力を求められるようになります。
これで楽々ですね!