gnome-keyringとhttp(s)リポジトリでgitを使用する正しい方法は何ですか?


43

現在、私git pullまたはgit pushhttp(s)リポジトリにアクセスするたびに、次のものが得られます。

$ git pull
Username for 'https://gitrepos.reposdomain.com': me@mydomain.com
Password for 'https://me@mydomain.com@gitrepos.reposdomain.com': 

これはまれにしか使用できませんが、すぐに非常に迷惑になり始めます。 残念ながら、sshへの切り替えはこの場合のオプションではありません。

以前のバージョンでgitは資格情報「ストア」と「キャッシュ」が提供されていましたが、パスワードがプレーンテキストで保存されていたため、これはお勧めできませんでした。

しかし

新しいバージョンのgitgitクレデンシャルはに保存gnome-keyringされているようですが、正しく設定する必要があります。

SOで他の(Ubuntu以外の)回答をたどってこれを機能させました(つまり、この1つ)が、ユーザー名とパスワードのプロンプトが表示されたままです。

githttp(s)リポジトリの資格情報を保存するための正しい安全な方法は何ですか?また、Ubuntuで資格情報をどのように機能させるのですか?


試した方法を記載する必要があります。それ以外の場合は、正確にそれらを示唆する答えを見つけるかもしれません。
ムル

@muruなぜ読みやすくするために追加した強調を削除したのですか?これは単なるテキストの塊であり、質問を他の質問と区別する理由と実際の質問はそれほど明確ではありません。
tu-Reinstate Monica-dor du

全体の文が太字イタリック体はほとんど読みやすいです。
ムル

1
@muru私は違うことを請う。太字で斜体のテキストは、質問の重要な部分を浮き彫りにしていると思います。
tu-Reinstate Monica-dor du

回答:


45

gnome-credential-helper 廃止されました。

代わりに、libsecretを使用してください。Ubuntuにまだ組み込まれていない場合は、次の手順を使用します。

  1. 以下libsecretを使用して、開発ライブラリをインストールできます。

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. 次に、資格情報マネージャーを作成する必要があります

    cd /usr/share/doc/git/contrib/credential/libsecret

    sudo make

  3. 最後に、configで新しく作成されたファイルをgitにポイントする必要があります。

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

https://stackoverflow.com/a/40312117/2017781の詳細


1
このソリューションは、2.11以上のgitバージョンにのみ適用されることに注意してください(libsecret dirが見つかる場合)
Charles Roberto

1
これは安全ですか?秘密はどこに保存されますか?伝送と保管の両方は安全ですか?公式のドキュメントはありますか?どうやら、このページこのページによると、それは「メイン」にあり、Debian / Ubuntuによって管理されています。そして、「
DBus

1
@caw:GNOMEでは、「Secret Service」は、異なるAPIを介した同じgnome-keyring-daemonです。(libsecret計画は、他のDEが同じAPIをサポートする独自のバックエンドを構築できるようにすることでした。たとえば、KDEはこれをkwalletdで実装する予定です。)
grawity

5
これが18.04で機能することを確認できるので、優先回答を更新します。:)
tu-Reinstate Monica-dor du

44

credential helperGnome Keyringでgitをセットアップする必要があります。

Gnome Keyring develをインストールしてコンパイルします。

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring

そして、資格情報をセットアップします。

git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

それは本当に奇妙です。意味的には、リンクの回答とこの回答の間に違いはないはずです。しかし、なんらかの理由で、この答えは他の答えが機能しない場合でも機能します。
tu-Reinstate Monica-dor du

その後、git pushまたはgit pull通常どおりに実行し、最初にansdストアを要求し、その後毎回キーリングから取得します。確認するには、を実行しseahorseます。「パスワード」->「ログイン」の下にリストされているはずです。
tu-Reinstate Monica-dor duh

@tudorそれは奇妙です、私は私の答えとリンクの間に「概念的な」違いを見ません。それが役立つことを嬉しく思います。

まだ「make」コマンドを実行する必要があるのは奇妙に思えますが、これらの手順はうまく機能します。ありがとう!
DaveTheScientist

2

この単純なアプローチは、git 2.17.1を使用するUbuntu 18.04.1では十分なようです。

git config --global credential.helper cache

次のように1時間(= 3600秒)のタイムアウトを指定できます。

git config --global credential.helper 'cache --timeout=3600'

細かいマニュアルでさらに読む。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.