https経由でアクセスするときにGit認証情報(ユーザ名とパスワード)を毎回聞かれるのが非常に面倒だったのでやり方を調べました。
社内ネットワークの制限でSSHを使用できない場合もあると思うので、その時の解決策です。
環境
ホスティングサービス:GitLab
OS : ubuntu18.04 (Virtual Box)
認証情報の保存
git credential
を使用することで認証情報を保存します。
Git のさまざまなツール - 認証情報の保存
Linuxで認証情報を保存かつ暗号化した状態で管理するにはlibsecret
を使用します。
同じ用途でlibgnome-keyringもありますが、こちらは廃止予定となっています。
https://github.com/GNOME/libgnome-keyring
以下の4つのコマンドを入力した後に、GitLabにアクセスすれば認証情報が保存されます。
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
初回時のみユーザー名とパスワードを入力が必要です。
私はパスワードの代わりにパーソナルアクセストークンを使用することも可能です。
個人アクセストークン
認証情報の削除
gitの設定で認証情報を解除するには以下のコマンドを入力します。
git config --global --unset credential.helper
この状態だとlibsecretに登録されている認証情報は削除されていません。
libsecretに登録されている認証情報はseahouse
を使用することで完全に削除することができます。
ubuntuではアプリケーションからパスワードと鍵
を選択することで表示できます。
ログインに登録されているGitLabにアクセスするキーを削除します。
コマンドで削除する方法は見つけられませんでした・・
補足
手動でlibsecretフォルダを削除してしまったとき
記事を書くにあたって、一度libsecretをフォルダごと削除して再インストールを試したところ再インストールしてもlibsecretフォルダが生成されない問題にハマりました。
(正しい解決方法かわからないですが・・)Githubから直接コードをコピーしてmakeすることで解決しました。
https://github.com/git/git/tree/master/contrib/credential/libsecret
/usr/share/doc/git/contrib/credential/libsecret
ディレクトリを作成して、その中でviコマンドを使用してコードをコピペしたファイルを生成し、makeします。
vi makefile
vi git-credential-libsecret.c
make
参考