Windows用のGitHubとGitExtensionsをインストールし、複数のバージョンのgit.exeをパスに含めました。
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe
E:\cygwin\bin\git.exe
C:\Program Files (x86)\Git\cmd\git.exe
C:\Program Files (x86)\Git\bin\git.exe
今、私がやるときはgit Push Origin master
最後の3つのいずれかとgit.exe
s、ユーザー名の入力を求められます。しかし、Portable Gitはユーザー名を要求しません。次のスクリーンショットを参照してください。
ハート型のキャラクターは^C
無視してください。
この場合、認証はどのように処理されますか?最終的には、最後の3つのGitに承認を求めないようにします。それはどうして可能ですか?
GitHubのGitで2つの追加ファイルを見つけましたが、それらがまったく重要であるとは思えません。
GitHub for Windows自体の場合、 Paul Betts ( GitHub staff )はG4Wにはすでにクレデンシャルヘルパーが含まれている(_に基づいて)CryptProtectおよび CryptProtectData
関数 )
下記の his answer を参照してください。
G4Wを使用しない人のために、読んでください。
前の回答 に追加するには(コンソール/コマンドラインからGitHubにプッシュする場合):
~/.netrc
(UNIXの場合)または%HOME%/_netrc
(Windowsの場合)などのファイルは、GitHubへのすべてのgit Pushの認証情報の入力を回避するに役立ちます。
netrc
ファイルには、必要な数の認証情報を保存できます。
(GitHubまたはその他のリポジトリホスティングプロバイダー用)
だが:
次のセクションでは、これらの問題について説明します。
(2013年9月3日)
アプリケーションを介して2FAを構成する、常にアプリを介して、テキストSMSを介して(= /// =)決して回避できる場合。
その理由は、そのアクティブ化プロセスを通じて、2要素の秘密鍵にアクセスできるためです。これは、30秒ごとに第2要素認証を生成するために使用されます。
こうすることで、任意のGAuth( Google Authenticator )クライアントにアクセスし、同じ2FA秘密鍵を入力して、の正確なあなたが得るであろう同じコードSMSメッセージ。
ただし、電話サービスがない場合でも機能します;)
もちろん、使用する 最初のクライアントは、Android電話またはあなたのiphoneのGAuth です。
つまり、SMSを待つ必要がなく、2FAを携帯電話に保持できます。
ただし、秘密鍵を持っていると、電話のクライアントに限定されません。
次のような他のクライアントに移動できます。
これらのすべてのクライアント(GAuthを使用する電話、デスクトップクライアントまたはWebページを使用)では、2要素の秘密鍵が必要です。
SMSを介して2FAをアクティブ化した場合:
注:AndroidのGauthクライアントにキーを追加した場合、最初に上記の秘密キーを記憶していなければ、 allは失われません 。
(ただし、根ざした電話が必要です)
$ adb Shell
# sqlite3 /data/data/com.google.Android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|[email protected]|your2factorkey|0|0
sqlite> .quit
#exit
関連するリカバリコードを取得して保存することを忘れないでください(GitHubアカウントの Account Settings
セクションにあります) :
(これらのコードを保存するには、whereに関する最後のセクションも参照してください)
_netrc
ファイルを暗号化する(credential helper netrc with git1.8.3 +を参照してください:gpg暗号化)
そのファイルでは、少なくとも次の2つの資格情報を暗号化する必要があります。
machine github.com
login username
password xxxx
protocol https
machine Gist.github.com
login username
password xxxx
protocol https
次に、~/.netrc.gpg
または%HOME%/_netrc.gpg
のみを保持します
ただし、上記の新しい2要素認証を有効にすると、「xxxx
」はGitHubアカウントにはなりません。「パーソナルアクセストークン」に関する次のセクションをご覧ください。
2FAを有効にした場合、GitHubパスワードでプッシュすることはできません。
Anonymous access to user/repo.git denied
これが表示される内容です(gpg
の部分は netrc
資格情報ヘルパー を使用しているためです):
C:\Users\VonC\prog\git\git>git Push Origin
Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg]
You need a passphrase to unlock the secret key for
user: "auser <[email protected]>"
2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6)
remote: Anonymous access to VonC/git.git denied. <=====
fatal: Authentication failed for 'https://[email protected]/VonC/git/' <=====
したがって、GitHubアカウントのDeveloper
セクション(サブセクション Personal access tokens
)に移動して、 Personal Access Token:
そのトークン2要素認証は必要ありません:_netrc
ファイルでパスワードとして使用でき、GitHubにプッシュするだけで済みます。
ただし、メインのGitHubアカウントのパスワードとの違いは次のとおりです。
個人用アクセストークンを取り消すことができます(そして、新しいものを生成します)、メインのパスワードは変更しないでください。
~/.netrc.gpg
ファイルでメインのGitHubパスワードを暗号化した場合は、それを新しい個人トークンに置き換えることができます。
gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg
読みやすくするために複数行で:
gpg -d %HOME%\_netrc.gpg |
sed "s/yourPassord/YourPersonalAccessToken/g" |
gpg -e -r auser --yes -o %HOME%\_netrc.gpg
これは、UNIXのような GoW(WindowsのGnu) コマンド(sed
を含む)の助けを借りて、Windowsでも機能します。
lastpass.comのようなオンライン認証情報ストレージをお勧めします
保存する必要があります:
GitHub for Windowsを使用している場合は、次のことを行うだけです。
GitHubは、HTTPSおよびSSHベースのリモートの両方について、コマンドラインでこの問題をすでに解決しています
https://help.github.com/articles/set-up-git
パスワードキャッシングセクションは言う:
GitHub for Windowsを使用しない場合は、OSのヘルパーを次の場所からダウンロードできます。
そうすれば、他のgit.exeはパスワードを要求せずに機能します。 :)