こんにちは!武藤です。
Git運用を始めてから1か月ちょっと経ちました。
みんな操作に慣れてきましたが、リモートリポジトリにアクセスする度にパスフレーズを入力するのが面倒という声が聞こえてきました。
いっそ、パスフレーズは設定しないという手段もありますが、セキュリティのことを考えると設定しておいたほうが安心です。
つけるなら11文字以上のフレーズにしないと、すぐにクラックされるという記事を見たことがあります。
でも、毎回11文字以上のパスフレーズを入力するのはとても面倒ですよね…。
今回は、そんな悩みを解消してくれる、パスフレーズの入力を省略する方法をご紹介します!
SSH agentを使う
SSH agentとは、公開鍵認証で使われる認証鍵を保持するプログラムです。
WindowsにGitをインストールする とGit Bashで利用可能です。
起動しておくことで、パスフレーズの入力を省略してリモートリポジトリへのアクセスが可能となります。
.bashrcを使えば、ssh-agentコマンドを毎回入力しなくても、Git Bashを起動したときに自動的にssh-agentを起動することができるようになります。 例えば、.bashrcの最後に、次のようなコマンドを追加をします。
#ssh-agent
eval `ssh-agent`
ssh-add
これでリモートリポジトリにアクセスする度に毎回パスフレーズを入力する必要はなくなりますが、これだけではセッションごとにパスフレーズを入力する必要があります。
今回はさらに、1回起動したssh-agentを別のセッションでも共用できる設定も追記します。
これにより、PCを起動して最初にGit Bashを起動した1回のみパスフレーズを入力すれば、Git Bashを再起動した後はパスフレーズの入力を省略できます。
パスフレーズの入力を省略する方法
(1) Git Bashを起動し、~/.bashrc ファイルを編集します。
vi ~/.bashrc
(2) 以下のコードを、最後に貼り付けます。
SSH_ENV="$HOME/.ssh/environment"
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
echo succeeded
chmod 600 "$SSH_ENV"
. "$SSH_ENV" > /dev/null
ssh-add
}
# test for identities
function test_identities {
# test whether standard identities have been added to the agent already
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $? -eq 0 ]; then
ssh-add
# $SSH_AUTH_SOCK broken so we start a new proper agent
if [ $? -eq 2 ];then
start_agent
fi
fi
}
# check for running ssh-agent with proper $SSH_AGENT_PID
if [ -n "$SSH_AGENT_PID" ]; then
ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
fi
# if $SSH_AGENT_PID is not properly set, we might be able to load one from
# $SSH_ENV
else
if [ -f "$SSH_ENV" ]; then
. "$SSH_ENV" > /dev/null
fi
ps -ef | grep "$SSH_AGENT_PID" | grep -v grep | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
else
start_agent
fi
fi
「Esc」キーを押して、:wqと入力すると、保存して閉じます。
(3) Git Bashを閉じます。
(4) 再び、Git Bashを開きます。
(5) 開くとすぐに、パスフレーズを聞かれます。
Welcome to Git (version 1.7.8-preview20111206)
Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
Enter passphrase for key '/c/Users/username/.ssh/id_rsa':
(6) パスフレーズを入力します。
これで別のセッションでも、パスフレーズの入力を省略できるようになりました!
パスフレーズを入力するのは、PCを立ち上げて最初にGit Bashを起動したときのみです!!