コミットをプッシュするためにGitHubの認証情報をキャッシュする方法はありますか?


1867

最近、リポジトリをGitHubのhttps://に同期するように切り替えました(ファイアウォールの問題のため)。毎回パスワードを要求されます。

毎回認証する代わりに、資格情報をキャッシュする方法はありgit pushますか?



2
これで、資格情報ヘルパーを使用して、資格情報_netrcを含むファイルを暗号化できます。以下の私の答えを参照しください。git-credential-winstore.exeWindowsでは少しバグがある(メモリキャッシュ)の方が安全であることがわかりました。
VonC 2013


git-credential-winstoreWindowsに最適です。バギーとは何ですか?sshを設定することをお勧めしますが、何度か行っていますが、エラーが発生しやすく、複数のホストに接続する必要がある場合は、単純に機能しないことがあります。
Bron Davies

2
「SSH証明書」とは、「SSH秘密鍵」を意味していると思います。
マイケル・マイア2017年

回答:


2369

Gitバージョン1.7.9以降

Git 1.7.9(2012年1月下旬にリリース)以降、Gitには、HTTP / HTTPSで常にパスワードを入力しなくて済むようにする、認証ヘルパーと呼ばれるきちんとしたメカニズムがあります。(以下のコメントでこの新機能を指摘してくれたdazonicに感謝します。)

Git 1.7.9以降では、次の資格情報ヘルパーのいずれかを使用できます。

git config --global credential.helper cache

... Gitに、パスワードを(デフォルトで)15分間メモリにキャッシュしておくように指示します。次のコマンドでタイムアウトを長く設定できます。

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

(この例はLinuxのGitHubヘルプページで提案されています。)必要に応じて資格情報を永続的に保存することもできます。以下の他の回答を参照してください。

GitHubのヘルプでは、Mac OS Xを使用していて、Homebrewを使用してGitをインストールした場合、ネイティブのMac OS Xキーストアを次のように使用できることが示唆されています。

git config --global credential.helper osxkeychain

Windowsの場合、Windows用のGit Credential Managerまたはmsysgitのwincredと呼ばれるヘルパーがあります。

git config --global credential.helper wincred # obsolete

Windowsの2.7.3+のためのGit(2016年3月):

git config --global credential.helper manager

Linuxの場合、(またはKWalletなどの他のキーリング実装)を使用gnome-keyringできます

1.7.9より前のGitバージョン

1.7.9より前のバージョンのGitでは、このより安全なオプションは使用できません。originリモートが使用するURLを変更して、次の方法でパスワードを含める必要があります。

https://you:password@github.com/you/example.git

...言い換えると:password、ユーザー名の後との前@

次のコマンドを使用して、originリモコンの新しいURLを設定できます。

git config remote.origin.url https://you:password@github.com/you/example.git

を使用していることを確認してください。httpsこれを行うと、GitHubパスワードが.gitディレクトリにプレーンテキストで保存されますが、これは明らかに望ましくありません。

すべてのGitバージョン(バージョン0.99以降)

別の方法は、ユーザー名とパスワードを~/.netrcファイルに入れることですが、リモートURLにパスワードを保持する場合と同様に、パスワードはプレーンテキストでディスクに保存されるため、安全性が低く、推奨されません。ただし、このアプローチを採用する場合は、次の行をに追加します~/.netrc

machine <hostname> login <username> password <password>

...交換<hostname>サーバーのホスト名とし、<username>そして<password>ユーザー名とパスワードを使用して。また、そのファイルに制限付きのファイルシステム権限を設定することも忘れないでください。

chmod 600 ~/.netrc

Windowsでは、このファイルをと呼び_netrc、%HOME%環境変数を定義する必要があることに注意してください。詳細については、以下を参照してください。


72
パスワードをプレーンテキストで保存しないでください。Git 1.7.9以降では、資格情報ヘルパーを使用できます。git config --global credential.helper osxkeychainOS Xの場合。他のOSについては、help.github.com
articles /

6
FWIW、osxキーチェーンのものは、ベースGITソースコードの一部です。これは、BrewやMacPortsの独占的なコンポーネントではなく、月の味は何でもありません。そして、最初からgitをビルドする必要すらありません。cdcontrib / credential / osxkeychain /を実行してmakeを実行するだけです。
シンセサイザー

2
2要素認証では、githubがパーソンアクセストークンと呼ぶものを使用する必要があります。実際には、常にパスワードを使用する必要があります。パスワードとは異なり、アクセス権を制御できるためです。URLのパスワードを置き換えるだけで終わりますhttps://username:PERSONAL_ACCESS_TOKEN@github.com/username/project.git。ディスクに保存されているプレーンテキストのパスワードを、使用するのに十分なほど安全にします。
ラッセルスチュアート

12
git config --global credential.helper cacheWindowsでは動作しません:stackoverflow.com/questions/11693074/…Windowsでgitcredentialstoreを使用して満足
Sebastian J.

8
このタイムアウトを無限に設定する方法はありますか?
sudo

720

以下を使用して、Gitに資格情報を永続的に保存させることもできます。

git config credential.helper store

注:これは便利ですが、Gitはプロジェクトディレクトリの下のローカルファイル(.git-credentials)に資格情報をクリアテキストで保存します(「ホーム」ディレクトリについては下記を参照)。これが気に入らない場合は、このファイルを削除して、キャッシュオプションの使用に切り替えます。

Gitがリモートリポジトリに接続する必要があるたびに資格情報を要求するように再開する場合は、次のコマンドを実行できます。

git config --unset credential.helper

でパスワードを保存するには.git-credentials、あなたの中に%HOME%プロジェクトディレクトリとは対照的に、ディレクトリ:使用--globalフラグ

git config --global credential.helper store

7
Windowsでは、WindowsのCreditial StoreであなたのGITのパスワードの暗号化されたバージョンを格納するためのヘルパーユーティリティ設定するものをダウンロードすることができ、参照confluence.atlassian.com/display/STASH/...
コンタンゴ

76
--globalを指定する必要があるか、現在のリポジトリに設定を保存しようとすることがわかりました。– git config --global credential.helper store
Brian Gordon

6
永続的に保存する代わりに、なぜキャッシュを行うのですか?コンピュータか何かを共有していますか?
マイケルJ.カルキンス2013

2
@BrianGordon WindowsでGIT 1.9.5を使用していますが、--globalフラグは冗長でした。このフラグがなくても、資格情報ファイルは%USER_HOME%ディレクトリに作成されました。
jFrenetic

2
プレーンテキストで保存しない場合、何で保護されますか?あなたのパスワード?gitに接続するときに、管理者パスワードを尋ねる必要はありませんか?別のパスワードを取得するためにパスワードを入力する必要はありませんか?
Cruncher 2016年

101

TLDR; 暗号化されたnetrcファイルをGit 1.8.3以降で使用します

GitリポジトリのHTTPS URLのパスワードを保存することは、Windowsの~/.netrc(UNIX)または%HOME%/_netrc(に注意)で可能_です。

しかし:そのファイルはあなたのパスワードをプレーンテキストで保存します。

解決策GPG(GNU Privacy Guard)でそのファイルを暗号化し、パスワードが必要になるたびに(push/ pull/ fetch/ clone操作用に)Gitで復号化します。


注:Git 2.18(2018年第2四半期)では、暗号化された.netrcファイルの復号化に使用されるGPGをカスタマイズできるようになりました。

Luis Marsano ( ``)によるcommit 786ef50commit f07eeed(2018年5月12日)を参照してください。(による合併Junio C浜野- -017b7c5コミット、2018年5月30日)を
gitster

git-credential-netrcgpgオプションを受け入れる

git-credential-netrcgpggpg.programオプションに関係なく、' 'で解読するようにハードコードされました。
これは、現代のGnuPGを「gpg2」のような別のものと呼ぶDebianのようなディストリビューションの問題です。


Windowsのステップバイステップの説明

Windowsの場合:

(Gitのgpg.exeディストリビューションにはがありますが、完全なGPGインストールを使用するgpg-agent.exeと、GPGキーに関連付けられたパスフレーズを記憶するが含まれます。)

  • インストールしgpg4Win Lite、最小のGnuPGをコマンドラインインターフェイス(取る最新のgpg4win-vanilla-2.X.Y-betaZZ.exe)、およびGPGのインストールディレクトリを使用してPATHを実行します。

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe

( ' copy'コマンドに注意してください:Gitはコマンド ' gpg' を実行するためにBashスクリプトを必要とします。gpg4win-vanilla-2が付属しているためgpg2.exe、それを複製する必要があります。)

  • GPGキーを作成またはインポートし、それを信頼します。

    gpgp --import aKey
    # or
    gpg --gen-key

(必ずそのキーにパスフレーズを入力してください。)

  • その鍵を信頼する

  • 内のディレクトリに認証ヘルパースクリプトをインストールします%PATH%

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl

(注意:スクリプトはGit 2.25.x / 2.26で名前が変更されます。以下を参照してください)

(はい、これはBashスクリプトですが、Gitによって呼び出されるため、Windowsでは動作します。)

  • _netrcファイルをクリアテキストで作成する

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https

(使用するURLに応じて、' protocol'の部分: ' http'または ' https'を忘れないでください。)

  • そのファイルを暗号化します。

    gpg -e -r a_recipient _netrc

(暗号化されたファイルのみを残して、ファイルを削除でき_netrcます_netrc.gpg。)

  • その暗号化されたファイルを使用します。

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"

( ' /':C:\path\to...はまったく機能しません。)(最初に-v -dを使用して、何が起こっているかを確認できます。)

これ以降、認証を必要とするHTTP(S)URLを使用するGitコマンドは、その_netrc.gpgファイルを復号化し、接続しているサーバーに関連付けられているログイン/パスワードを使用します。GPGは初めて、ファイルを復号化するためにGPGキーのパスフレーズを要求します。それ以外の場合は、最初のGPG呼び出しによって自動的に起動されたgpg-agent そのパスフレーズを提供します。

このようにして、複数の URL /ログイン/パスワードを1つのファイルに記憶し、暗号化してディスクに保存することができます。
「キャッシュ」ヘルパーよりも便利だと思います。リモートサービスごとに異なるパスワードを覚えて入力し(セッションごとに1回)、そのパスワードをメモリにキャッシュする必要があります。


Git 2.26(2020年第1四半期)では、使用するためのサンプル資格情報ヘルパーがそのまま使用できる.netrcように更新されています。パッチ/ディスカッションを参照してください。

Denton Liu()によるcommit 6579d93commit 1c78c78(2019年12月20日)を参照してください。(合併によりJunio C浜野- -1fd27f8コミットし、2019年12月25日)をDenton-L
gitster

contrib/credential/netrc:構成PERL_PATH可能にする

サインオフ:Denton Liu

のPerlインタープリターのシバンパスgit-credential-netrcはハードコーディングされています。
ただし、一部のユーザーは別の場所にあるため、スクリプトを手動で編集する必要がありました。

.perlスクリプトプレフィックスを追加して、それをテンプレートとして示し、生成されたバージョンを無視します。他のPerlスクリプトと同様に、から生成されるようにを
拡張します。Makefilegit-credential-netrcgit-credential-netrc.perl

Makefileのレシピはから恥知らずに盗まれましたcontrib/mw-to-git/Makefile

そして:

2.26(2020年第1四半期)では、.netrcを使用するためのサンプル資格情報ヘルパーがそのまま使用できるように更新されています。

Denton Liu()によるcommit 6579d93commit 1c78c78(2019年12月20日)を参照してください。(合併によりJunio C浜野- -1fd27f8コミットし、2019年12月25日)をDenton-L
gitster

contrib/credential/netrc:リポジトリ外で作業する

サインオフ:Denton Liu

現在、git-credential-netrcgitリポジトリ以外では機能しません。次のエラーで失敗します。

fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.

ただし、リポジトリ内に存在する必要がある本当の理由はありません。資格情報ヘルパーは、リポジトリ外でも問題なく動作するはずです。

非自己のバージョンを呼び出しconfig()ているのでgit-credential-netrc、リポジトリ内で実行することがもはや必要性を。

ジェフキング(peff)が追加:

私はあなたがgpg-encryptedを使用していると想定していますnetrc(そうでない場合は、おそらく単にを使用する必要がありますcredential-store)。
「読み取り専用」のパスワードアクセスの場合、passconfigとの組み合わせは次のように少し優れています。

[credential "https://github.com"]
  username = peff
  helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"

1
Linuxで同じことを試してみます。 gitコマンド。「git --help」を参照してください
晴れた

4
@sunnyそれがcurl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc目的です:gitが ' ' を呼び出せるようにするにgit-credential-netrcは、パス($PATH)のどこにでもコピーする必要がありますcredential-netrc
VonC、2013

さて、_netrc上の私のために動作しませんでしたWindows 7PCが、.netrcために働いユーチューブ-DL--netrc、それに渡される引数。
Iulian Onofrei 2015

@VonC現在のURLはhttps://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl(7年後のパイピング)のようです
Gwyneth Llewelyn

1
@GwynethLlewelynありがとうございます。私はそれに応じて答えを編集しました。他の古い情報が表示された場合は、遠慮なく自分で編集してください。
VonC

43

HTTPSのURLにユーザーの資格情報を保存するには、昔ながらの簡単な方法があります。

https://user:password@github.com/...

あなたはでURLを変更することができます git remote set-url <remote-repo> <URL>

このアプローチの明らかな欠点は、プレーンテキストでパスワードを保存する必要があることです。ユーザー名(https://user@github.com/...)を入力するだけで、面倒な作業の半分を節約できます。

SSHに切り替えるか、GitHubクライアントソフトウェアを使用することをお勧めします。


2
ユーザー名/パスワードが見る、エンコードする必要があるかもしれませんstackoverflow.com/a/34611311/3906760
MrTux

43

資格情報ストアを使用します。

Git 2.11+のためのOS XLinuxでは使用Gitリポジトリの資格証明ストアに建てられました

git config --global credential.helper libsecret

Windows上のmsysgit 1.7.9 以降の場合

git config --global credential.helper wincred

OS X上のGit 1.7.9以降の場合:

git config --global credential.helper osxkeychain

2
私は確かにこれが移動するための方法であることだけど、私は悲しげにエラーが出ます:git: 'credential-gnome-keyring' is not a git command. See 'git --help'.
codepleb

1
ありがとう、でも何とかして同じエラーが出ます。私は何か間違ったことをしていますか?コマンドを入力しても何も起こりません。プッシュするとすぐに、資格情報を要求されますが、これは正常に挿入されましたが、エラーが発生しました。それを実行すると、それはgitコマンドではないということです。
codepleb 2017

2
libsecretは、Linux上で動作する前に、次の手順を実行する必要があります。stackoverflow.com/a/40312117/775800
Lavamantis

1
もう1つ、Githubで2FAを有効にすると、パスワードが機能しなくなります。ただし、Githubの[設定]ページで個人用アクセストークンを作成すると、そのトークンがパスワードとして機能します。github.com/github/hub/issues/822
Lavamantis

3
セキュリティの問題: Windows資格情報マネージャーにより、Windowsアカウントにログインしているユーザーがプレーンテキストのパスワードにアクセスできるようになります。彼らが行う必要があるのは、printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get詳細はこちら)などの資格情報マネージャーにリクエストを送信することだけです。これには常に個人用アクセストークンを使用する必要があります。もちろん、GitHubアカウントで2FAを使用してください。
cjs 2018

40

そのまま使えます

git config credential.helper store

次にプルまたはプッシュでパスワードを入力すると、パスワードはファイル.git-credentialsにプレーンテキストとして保存されます(少し安全ではありませんが、保護されたフォルダーに入れるだけです)。

そして、このページで述べたように、それだけです:

git-credential-store


3
Git for Windows 2.7.3(2016年3月)の場合:github.com/git-for-windows/git/releases?after=v2.8.4.windows.1git config credential.helper manager代わりに
VonC

23

最初にヘルパーをダウンロードする必要があることはすぐにはわかりませんでした!Atlassianの credential.helperダウンロードがGitリポジトリで永続的に認証されているのを発見しました。

見積もり:

OS Xで資格情報キャッシュを使用してGitを使用する場合は、次の手順に従います。

バイナリgit-credential-osxkeychainをダウンロードします。

以下のコマンドを実行して、バイナリが実行可能であることを確認します。

chmod a+x git-credential-osxkeychain

それをディレクトリに置き/usr/local/binます。

以下のコマンドを実行します。

git config --global credential.helper osxkeychain

23

ログイン認証情報をURLの一部として含めるだけです。

git remote rm origin
git remote add origin https://username:mypassword@github.com/path/to/repo.git

注:この方法はお勧めしませんが、急いでいて他に何も機能しない場合は、この方法を使用できます。


12
メールIDに%40を使用して@をエスケープする必要があります
Tarun Gupta

メールIDに「+」がある場合はどうなりますか?私は同じ脱出を試みましたが、プッシュは「レポが見つかりません」と言った
killjoy

4
+の代わりに%2Bを持っている
Tarun Gupta

パスワードをプレーンテキストで保存し、簡単にアクセスできるようにすることは、最適なソリューションではない場合があります。
活動の削減

20

GNU / Linuxセットアップでは、〜/ .netrcも非常にうまく機能します。

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

GitがHTTPSトランスポートに使用しているネットワークライブラリによって異なる場合があります。


4
また、確認してくださいchmod 0600 ~/.netrc
poolie 2013年

ここにUbuntu netrcのマンページへのリンクを残したいだけです。別のユーザー(/home/git/.netrc)用に作成し、所有権をそのユーザーに変更する必要がありました。
zacharydl 2015年

17

Windowsの場合、Git Credential Manager(GCM)プラグインを使用できます。現在、Microsoftによって保守されています。良い点は、パスワードをプレーンテキストではなく、Windows資格情報ストアに保存することです。

プロジェクトのリリースページにインストーラーがあります。これにより、資格情報マネージャーが組み込まれたGit for Windowsの公式バージョンもインストールされます。GitHub(およびその他のサーバー)の2要素認証が可能です。また、最初にログインするためのグラフィカルインターフェイスがあります。

Cygwinユーザー(またはすでに公式のGit for Windowsを使用しているユーザー)の場合、手動インストールを選択することをお勧めします。リリースページからzipパッケージをダウンロードします。パッケージを抽出して、install.cmdファイルを実行します。これはあなたの~/binフォルダーにインストールされます。(~/binディレクトリがPATHにあることを確認してください。)次に、次のコマンドを使用して構成します。

git config --global credential.helper manager

その後、Gitはgit-credential-manager.exe任意のサーバーへの認証時にを実行します。


3
アカウントにログインした人は誰でも、パスワードの平文に簡単にアクセスできます。彼らが行う必要があるのは、printf "protocol=https\nhost=git.mycompany.com\n" | git credential-manager get詳細はこちら)などの資格情報マネージャーにリクエストを送信することだけです。これには常に個人用アクセストークンを使用する必要があります。もちろん、GitHubアカウントで2FAを使用してください。
cjs 2018

13

Markが言ったようにプレーンテキストでパスワードを保存したくない場合は、プッシュする場合とは異なるGitHub URLをフェッチに使用できます。構成ファイルの[remote "origin"]次の場所:

url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git

少なくともオープンソースプロジェクトでは、プッシュするときはパスワードを要求しますが、フェッチするときは要求しません。


12

OAuth

独自の個人用APIトークンOAuth)を作成し、通常の資格情報を使用するのと同じように使用できますアドレス:)/settings/tokens。例えば:

git remote add fork https://4UTHT0KEN@github.com/foo/bar
git push fork

.netrc

もう一つの方法は、あなたの中に、ユーザ/パスワードを設定することです~/.netrc_netrcWindowsの場合)、例えば

machine github.com
login USERNAME
password PASSWORD

HTTPSの場合は、次の行を追加します。

protocol https

資格情報ヘルパー

するにはGitの中であなたのGitHubのパスワードをキャッシュすることは HTTPSを使用する場合は、使用することができます資格ヘルパーをあなたGitHubのユーザ名とパスワード、それはGitHubのに話すたびに覚えておくことにGitを伝えるために。

  • Macの場合:git config --global credential.helper osxkeychainosxkeychain helper必要)、
  • ウィンドウズ: git config --global credential.helper wincred
  • Linuxおよびその他: git config --global credential.helper cache

関連:


10

資格情報ヘルパーを使用できます。

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

どこxの秒数です。


7
それは秒数です...一部の天才はミリ秒としてそれを更新し、誰もがチェックせずにそれを承認しました。答えがわからなくても、誤解を招かないようにしてください。ありがとう!
チャラン14

storecacheおよびその他の一般的なものがリストされ、説明されている場所へのリンクを提供できますか?
Notinlist 2014年

3
最初に「キャッシュ」をマネージャーとして使用する別の特定のコマンドを呼び出さない限り、これはたわごとをジャックするという事実に言及することに注意してください。これは非常に不可解で、これらの回答はすべて不完全であり、どれも機能しません。信じられないほどイライラする。代わりにこれを参照してください:stackoverflow.com/a/24800870/88409
Triynko 2017年

10

リポジトリのクローンを作成したらreporepo/.git/config以下のような設定を編集して追加できます。

[user]
    name = you_name
    password = you_password
[credential]
    helper = store

そうすればusernamepassword何度も尋ねられることはありません。


で動作しますhelper = manager(ただし、最初のプッシュではユーザー名+リポジトリを要求されます)。
ステファン・ローラン

helper = managerでエラーが発生するcredential-managerはgitコマンドではありません
Kapil

残念ながらgitは設定ファイルのパスワードを無視します。credit.storeを持つ.git_credentialsが唯一のオプションです。
アバマンダー

9

これは安全なソリューションではありませんが、他に何もインストールせずに、単純なソリューションが必要な場合もあります。そして、ヘルパー=ストアが機能しなかったため、ダミーのヘルパーを作成しました。

スクリプトを作成して、ユーザーのbinフォルダー(ここではcredfakeという名前)に配置します。このスクリプトは、ユーザー名とパスワードを提供します。

#!/bin/bash
while read line
do
  echo "$line"
done < "/dev/stdin"
echo username=mahuser
echo password=MahSecret12345

実行可能にする:

chmod u+x /home/mahuser/bin/credfake

次にgitで構成します。

git config --global credential.helper /home/mahuser/bin/credfake

(または--globalなしで使用して、1つのリポジトリのみに使用します)

-voilá-gitはこのユーザー+パスワードを使用します。


同意する。確かに(安全でない場合)シンプルなソリューション。+1、あなたが何をしているか知っている限り。
VonC、2017年

7

アカウントパスワードの代わりに認証トークンを使用する必要があります。GitHub設定/アプリケーションに移動し、個人用アクセストークンを作成します。トークンは、パスワードと同じ方法で使用できます。

トークンは、ユーザーがプロジェクトの作業にアカウントパスワードを使用できないようにすることを目的としています。新しいトークンの作成や古いトークンの取り消しなどの管理作業を行う場合にのみ、パスワードを使用してください。


ユーザーにGitHubアカウントへのアクセス全体を許可するトークンまたはパスワードの代わりに、プロジェクト固有のデプロイメントキーを使用して、単一のプロジェクトリポジトリへのアクセスを許可できます。通常の認証情報で他のGitアカウントまたはプロジェクトに引き続きアクセスできる場合は、次の手順でこの異なるキーを使用するようにGitプロジェクトを構成できます。

  1. 含まれているSSHの設定ファイル書き込みHostIdentityFile展開のキーのため、多分UserKnownHostsFile、多分User(私はあなたがそれを必要としないと思うけれども)を。
  2. 事実上あるSSHラッパーシェルスクリプトを記述します。 ssh -F /path/to/your/config $*
  3. GIT_SSH=/path/to/your/wrapper通常のGitコマンドの前に追加します。ここで、git remote(原点)はgit@github.com:user/project.git形式を使用する必要があります。

7

セキュリティのために資格情報を使用することをお勧めしますが、キャッシュを使用してしばらく保持することができます。

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

認証情報は3600秒間保存されます。


これは、3600秒後にもう一度パスワードを入力する必要があることを意味します??? それらを永久に保存する方法は?
HoangVu

$ git config credential.helper 'cache --timeout = 3600' error:could not lock config file .git / config:No such file or directory
PlantationGator

これはうまくいきました:git config --global credential.helper 'cache --timeout = 3600'
PlantationGator

@多摩私はそれが3年になったことを知っています、しかしあなたは単に除外することができ--timeout、資格は永久に保存されます。
Neil Chowdhury

これはDockerコンテナ内で動作しますか( windowsservercore)内で機能しますか?
Peter Mortensen

5

私のように2要素認証を使用している場合、状況は少し異なります。他に良い答えが見つからなかったので、後で見つけられるようにここに貼り付けます。

2要素認証を使用している場合、ユーザー名/パスワードを指定しても機能しません。アクセスが拒否されます。しかし、アプリケーションアクセストークンを使用し、Gitの資格情報ヘルパーを使用してそれをキャッシュすることができます。関連するリンクは次のとおりです。

そして、私はこれをどこで見たのか覚えていませんが、ユーザー名の入力を求められたとき、そこにアプリケーションアクセストークンを貼り付けます。次に、パスワードを空白のままにします。私のMacで動作しました。


双方向認証を使用する場合は、「アクセストークン」をパスワードとして使用します。ユーザー名は常に同じです
Ben Yitzhaki


4

通常、次のようなリモートURLがあります。

git remote -v

origin    https://gitlab.com/username/Repo.git (fetch)
origin    https://gitlab.com/username/Repo.git (push)

の使用中にユーザー名とパスワードをスキップする場合はgit push、次のことを試してください。

 git remote set-url origin https://username:password@gitlab.com/username/Repo.git

同じURL(パスワードを含むユーザーの詳細を含む)をoriginに追加しました。

注:ユーザー名がメールIDの場合は機能しません。

git remote -v

origin    https://username:password@gitlab.com/username/Repo.git (fetch)
origin    https://username:password@gitlab.com/username/Repo.git (push)

3

gitcredentials(7)マニュアルページから回答を得ました。私の場合、Windowsのインストールに資格情報キャッシュがありません。資格証明ストアを使用します。

credential-storeを使用した後、ユーザー名/パスワードは[user folder] /。git-credentialsファイルに保存されます。ユーザー名/パスワードを削除するには、ファイルの内容を削除するだけです。


2
あなたのウィンドウに資格情報キャッシュがない場合、私はgit config --global credential.helper wincredこのストアのパスワードを永久に使用することをお勧めします。
チェタバハナ2016

2

Composerのドキュメントに、GitHub APIを使用できないようにできるため、次のように機能することが記載されいますgit clone

GitHubリポジトリでno-apiキーをtrueに設定すると、GitHub APIを使用する代わりに、他のGitリポジトリと同じようにリポジトリのクローンが作成されます。ただし、gitドライバーを直接使用する場合とは異なり、composerは引き続きGitHubのzipファイルを使用しようとします。

したがって、セクションは次のようになります。

"repositories": [
    {
        "type": "vcs",
        "no-api": true,
        "url": "https://github.com/your/repo"
    }
],

APIが存在するのには理由があることに注意してください。したがって、これはgithub.comへの負荷の増加に関する最後の手段となるはずです。


この回答が元の質問とどう関係するかは不明です。
Charles Oppermann、2015

2

また、bashrcファイルを編集して、スクリプトを追加します。

これにより、Gitを起動するとパスワードが要求され、ログオフするまでパスワードが記憶されます。

SSH_ENV=$HOME/.ssh/environment
  
# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}
  
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
   ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
      start_agent;
  }
else
    start_agent;
fi

0

使用している場合 osxkeychainしていてトークンの有効期限が切れており、それを更新したい場合は、次の手順に従います。

端末で実行し、Enterキーを2回押します。

git credential-osxkeychain erase
 host=github.com
 protocol=https

ここで、ユーザー名/パスワードの入力を求められます。ただし、これは「実行」されないようで、再入力し続ける必要がある場合があります。

その場合は、コンピュータを再起動してください。次回gitコマンドを実行してユーザー名/パスワードを入力すると、保存されます。

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