LoginSignup
120
102

More than 5 years have passed since last update.

gitレポジトリとhttpで通信する場合にユーザ情報の入力を省略する

Last updated at Posted at 2015-11-03

はじめに

gitでhttpを使ってリモートレポジトリとやり取りする場合、
毎回ユーザ名とパスワードを入力する必要があるので、その手続きを省略できるようにする。

環境

環境要素 バージョンなど
ディストリビューション CentOS Linux release 7.1
Git バージョン 1.8.3.1
Gitレポジトリサービス gitlab.com

作業内容

.netrcを利用する

ホームディレクトリに.netrcを以下の内容で作成する。
ただし、このままでは平文のままパスワードを保存することになるので暗号化を行う。

machineはgitレポジトリのドメイン名,login,passwordの部分は自分のユーザ情報とする。

.netrc
machine gitlab.com
login username
password secret

2018/08/24修正 protocolプロパティは必要ない

この状態でgit push,git pullを行うとユーザ情報の入力が省かれる。

GPGでパスワードを暗号化する

GPGとは

GPG (GNU Privacy Guard)はOpenPGPの規格に沿って作られた暗号化ソフトで、GNU GPLのもとで公開されているオープンソースソフトウェア。

.netrcの暗号化

  • GPGで作った鍵を持っていない場合は以下のコマンドで鍵を生成する
$ gpg --gen-key

鍵生成には時間がかかる場合がある。今回行った環境では30分ほどかかった。
参考 : ssh 越しに「gpg --gen-key」を実行したときに乱数生成の段階までくるとハングしてしまったかのようになるのは,「単に時間がかかっているから」らしい.約20分もかかった.

  • .netrcを暗号化する

暗号化を行うとホームディレクトリに.netrc.gpgファイルが生成される。次に元の.netrcファイルを削除

$ gpg -e -r <email> ~/.netrc
$ ls .netrc*
.netrc  .netrc.gpg
$ rm .netrc

  • git credential helper用のスクリプトに実行権を与え、gitの設定にcredential helperとして追加する

gitで用意されているgpgを使ったnetrc利用のスクリプトがあるので、それに対して実行権を与えることで使えるようになる。

$ sudo chmod +x /usr/share/doc/git-1.8.3.1/contrib/credential/netrc/git-credential-netrc
$ git config --global credential.helper /usr/share/doc/git-1.8.3.1/contrib/credential/netrc/git-credential-netrc

これで、git push,git pullするときに自動的に復号されるので、ユーザ情報の入力なしでpush,pullができるようになる。

参考

120
102
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
120
102