Windows環境でGitのログイン、パスワードの入力を省略する方法

git環境の構築についてMacLinux環境の設定方法は、色々と出てくるけどWindows環境での構築についてはあまり資料がなかったのでメモとして記載しておきます。まずは、作成したgit環境の構成についてです。

gitサーバ<------------------------------------------>クライアント

Ubuntu                   Windows

 

Windowsでgitクライアント環境を構築しようとするとTortoiseGitとかGit for Windowsのインストールをするかと思います。自分もこれら2つをインストールしてgitクライアント環境を構築しました。また、自宅の環境では、Jenkinsで自動化テストを行っておりジョブが開始されるとgitリポジトリからソースをクローンしてソースのビルドを行いテストを流すというジョブを作成し、運用しています。TortoiseGitとGit for Windowsをインストールしジョブを作成するのですが、毎回ジョブが失敗してしまいます。次に、Jenkinsに登録していたバッチ(リポジトリからクローンを行う)を単体で実行するとどうもクローンするときにユーザ名とパスワードを求められているようでした。そこで、gitからクローン等行うときに毎回パスワード等を求められると思うのですが自動的にログインするように設定しようと考えました。以下の方法は、Tera Termの自動ログインにも参考になると思います。まずは、gitクライアントの方で公開鍵を作成します。作成方法は、いろいろ参考になるサイトがたくさんあるかと思いますが自分はPuTTYgenで秘密鍵と公開鍵を作成しました。PuTTYgenは、TortoiseGitのフォルダの中にありますのでTortoiseGitをインストールしていれば新たにインストール必要がありません。公開鍵と秘密鍵を作成したら公開鍵をgitサーバの方に配置します。以下、サーバ側の設定手順です。

①.sshフォルダの作成 mkdir ./.ssh

②mv <公開鍵> ./.ssh

③cat <公開鍵> | tee -a ./.ssh/authorized_keys

vim /etc/ssh/sshd_configでファイルに鍵の場所を以下の通り、追記

 RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile      .ssh/authorized_keys

⑤公開鍵の削除

rm <公開鍵> 

⑥サービスの再起動

sudo /etc/init.d/ssh restart

これで、クライアント側で作成された公開鍵がサーバ側に配置されました。

次にクライアント側の設定です。Windowsでは、Pageantを使用しているのですがOSを再起動のたびに毎回鍵をアプリケーションへ認識しなければならないので非常に面倒です。そこでOSが起動するタイミングで鍵を自動的にPageantへ登録するバッチを作成しWindowsのスタートアップの1つとして登録しておきます。このバッチを動かすためにC:\Users\<ユーザ名>\.ssh\というフォルダも作成しておきます。この中に、先ほど作成した秘密鍵を格納しておきます。加えて、GIT_SSHの設定を行う事で、gitコマンドを直接実行してもユーザ名、パスワードの入力を省略することができます。

①バッチの内容

"C:\Program Files\TortoiseGit\bin\pageant.exe" "C:\Users\<ユーザ名>\.ssh\id_rsa.ppk"

②GIT_SSHの設定

環境変数GIT_SSHにTortoisePlink.exeのパスを指定します。

③git clone ssh://ユーザ名@gitリポジトリのパス

※ユーザ名を指定しないとユーザ名を毎回聞かれてしまいます。