毎回プロンプトでユーザーとパスワードを入力せずに、GitExtensionで自動的にプッシュとプルを使用したいと思います。
では、どうすれば資格情報をgitに保存できますか?
毎回プロンプトでユーザーとパスワードを入力せずに、GitExtensionで自動的にプッシュとプルを使用したいと思います。
では、どうすれば資格情報をgitに保存できますか?
回答:
走る
git config --global credential.helper store
その後
git pull
ユーザー名とパスワードを入力すると、それらの詳細は後で記憶されます。資格情報はディスク上のファイルに保存され、ディスクのアクセス許可は「ユーザーが読み取り/書き込みのみ可能」ですが、プレーンテキストのままです。
後でパスワードを変更したい場合
git pull
パスワードが正しくないため、失敗します。次に、gitが問題のあるユーザーとパスワードを~/.git-credentials
ファイルから削除し、再実行します。
git pull
以前と同じように機能するように、新しいパスワードを入力します。
を使用しgit config
て、Gitで資格情報ストレージを有効にすることができます。
git config --global credential.helper store
このコマンドを実行すると、リモートリポジトリから初めてプルまたはプッシュするときに、ユーザー名とパスワードを尋ねられます。
その後、リモートリポジトリとのその後の通信のために、ユーザー名とパスワードを入力する必要はありません。
保存形式は.git-credentials
プレーンテキストで保存されたファイルです。
また、他のヘルパーgit config credential.helper
、つまりメモリキャッシュを使用できます。
git config credential.helper cache <timeout>
これはオプションtimeout parameter
で、資格情報がメモリに保持される期間を決定します。ヘルパーを使用すると、資格情報がディスクに触れることはなく、指定されたタイムアウト後に消去されます。default
値は900 seconds (15 minutes).
警告:この方法を使用する場合、gitアカウントのパスワードはのplaintext
形式で保存されますglobal .gitconfig file
。たとえば、Linuxでは/home/[username]/.gitconfig
これが望ましくない場合は、ssh key
代わりにアカウントにを使用してください。
git config credential.helper cache
パスワードは専用メモリに保存され、ファイルに保存されません。参照:git-scm.com/docs/git-credential-cache
推奨される安全な方法:SSH
ssh Githubキーを作成します。行くgithub.com - >設定- > SSHとGPGキー- >新規SSHキー。次に、秘密鍵をコンピューターに保存します。
次に、秘密鍵が〜/ .ssh /ディレクトリにid_rsaとして保存されている場合は、認証用に追加します。
ssh-add -K ~/.ssh/id_rsa
より安全な方法:キャッシュ
git-credential-storeを使用して、ユーザー名とパスワードを一定期間キャッシュできます。CLI(ターミナルまたはコマンドプロンプト)に次のように入力するだけです。
git config --global credential.helper cache
次のように、タイムアウト期間(秒単位)を設定することもできます。
git config --global credential.helper 'cache --timeout=3600'
安全性がさらに低い方法
Git-credential-storeも使用できますが、パスワードをプレーンテキストファイルにディスクに保存します。
git config credential.helper store
時代遅れの答え-迅速かつ安全ではない
これは、パスワードをプレーンテキストで保存する安全な方法ではありません。誰かがあなたのコンピュータを制御できるようになると、あなたのパスワードが漏洩します!
次のようにユーザー名とパスワードを設定できます。
git config --global user.name "your username"
git config --global user.password "your password"
ターミナルで、次のように入力します。
# Set git to use the credential memory cache
git config --global credential.helper cache
デフォルトでは、Gitはパスワードを15分間キャッシュします。
デフォルトのパスワードキャッシュタイムアウトを変更するには、次のように入力します。
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
cache
パーツをに置き換えるだけstore
です。したがって、完全なコマンドは次のようになりますgit config --global credential.helper store
。これはあなたのパスワードをオープンテキストファイルに保存することに注意してください(言うまでもなく暗号化なし)
--timeout
パラメータの最大値はいくつですか?
~/.gitconfig
ファイルを編集して資格情報を保存できます
sudo nano ~/.gitconfig
すでに持っているはずです
[user]
email = your@email.com
user = gitUSER
このファイルの最後に追加する必要があります。
[credential]
helper = store
私がこのオプションを推奨する理由は、それがグローバルであることであり、いつでもオプションを削除する必要がある場合は、どこに移動して変更するかがわかっています。
このオプションは個人用コンピュータでのみ使用してください。
その後、あなたが引くとき| クローン| git passwordを入力します。通常、パスワードは次~/.git-credentials
の形式で保存されます
https://GITUSER:GITPASSWORD@DOMAIN.XXX
DOMAIN.XXXはGITHUB.COMである可能性があります。BITBUCKET.ORG | その他
ドキュメントを見る
次のようにURLに資格情報を入力するだけです。
https://Username
:Password
@github.com/myRepoDir/myRepo.git
次のように保存できます。
git remote add myrepo https://Userna...
... 使用例:
git push myrepo master
これで、URLエイリアスが一覧表示されます。
git remote -v
...そして、それらの1つを削除するコマンド:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
、を介しては複製できないssh
ため、このようなソリューションはそこで有用です。また、GitHubパスワードよりもわずかに安全なoauth-tokenを使用できることにも注意してください。
グローバル設定の場合は、ターミナルを(どこからでも)開き、以下を実行します。
git config --global user.name "your username"
git config --global user.password "your password"
これにより、マシン上にあるローカルgitリポジトリがその情報を使用します。
次のようにすることで、各リポジトリに対して個別に設定できます。
以下を実行します。
git config user.name "your username"
git config user.password "your password"
そのフォルダーのみに影響します(構成がローカルであるため)。
--local
タグを追加しましたが、何も起こりません
git-credential-storeを使用して、パスワードを暗号化せずにディスクに保存し、ファイルシステムの権限によってのみ保護することができます。
例
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
ファイルに保存されている資格情報を確認できます ~/.git-credentials
詳細については、git-credential-store-資格情報をディスクに保存するヘルパーにアクセスしてください
ユーザー名/パスワード認証よりもSSH認証を使用する方が安全です。
Macを使用している場合、SSHクライアント認証はMacOSキーチェーンに統合されています。SSHキーを作成したら、端末に次のように入力します。
ssh-add -K ~/.ssh/id_rsa
これにより、SSH秘密鍵がMacOSキーチェーンに追加されます。gitクライアントは、リモートサーバーに接続するときにsshを使用します。ssh公開鍵をサーバーに登録している限り、問題はありません。
SSH
。HTTP認証を使用すると、資格情報を盗んだユーザーはにしかアクセスできなくなりGitHub/GitLab
ます。また、トークンは寿命が制限されるように設計されています。
数十を超えた後 SOの記事、ブログなどの、私が試してみたすべての方法を、これは私が思い付いたものです。それはすべてをカバーしています。
これらは、リポジトリを複製するためにgitを安全に認証できるすべての方法とツールです 、対話型のパスワードプロンプトなしでです。
Just Works™が必要ですか?これは魔法の銀の弾です。
アクセストークンを取得し(GithubまたはGiteaの手順が必要な場合は、チートシートのセクションを参照)、環境変数に設定します(ローカル開発とデプロイメントの両方)。
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Githubの場合、次の行をそのままコピーして実行します。
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
おめでとうございます。httpsを使用する場合でも、ssh urlのいずれかのスタイルを使用する場合でも、gitリポジトリのクローンを自動化するツールは、パスワードプロンプトによって遮られることはありません。
Githubを使用していませんか?
他のプラットフォーム(Gitea、Github、Bitbucket)の場合は、URLを変更するだけです。ユーザー名は変更しないでください(任意ですが、個別の構成エントリに必要です)。
互換性
これはMacOS、Linux、Windows(Bashの場合)、Docker、CircleCI、Heroku、Akkerisなどでローカルに機能します。
より詳しい情報
チートシートの「.gitconfigの代わりに」セクションを参照してください。
安全保障
チートシートの「セキュリティ」セクションをご覧ください。
git config --global credential."https://somegithost.com".username MyUserName
いたのは、あなたのチートシートにありますが、この回答スレッドの他の場所にはありませんでした。その特定の解決策はOPの質問には答えませんが、私の答えにはなりました。
上記の答えはどれもうまくいきませんでした。私は私がしたかった以下のたびに取得保管fetch
またはをpull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Macの場合
パスフレーズを尋ねるのを止めることができました:
vi ~/.ssh/config
UseKeychain yes
:wq!
Windowsの場合
このstackexchangeの情報を使用してそれを機能させることができました:https://unix.stackexchange.com/a/12201/348665
~/.gitconfig
ファイルの編集とは別に、次のようにすれば実行できます。
git config --local --edit
または
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
または
git config --global user.name 'your username'
git config --global user.password 'your password'
ユーザー名とパスワードには、二重引用符を使用するとパスワードを壊す可能性のあるいくつかの文字が使用される場合があります。
--local
または--global
、構成パラメーターがプロジェクトまたはosユーザー用に保存されることを意味します。
ただ使う
git config --global credential.helper store
そしてgit pullを実行すると、ユーザー名とパスワードの入力を求められます。これからは、ユーザー名とパスワードの入力を求められなくなり、詳細が保存されます
.git-credentials
は、実行時にユーザー名とパスワード(アクセストークン)が格納される場所ですgit config --global credential.helper store
。これは、他の回答が示唆するとおり、ユーザー名とパスワードまたはアクセストークンを入力します。
https://${username_or_access_token}:${password_or_access_token}@github.com
したがって、ユーザー名とパスワード(アクセストークン)を保存するには:
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
これはgithubロボットに非常に役立ちます。たとえば、異なるブランチのルールを設定して同じDockerリポジトリでチェーン自動ビルドを解決し、次にそれにプッシュすることでトリガーしますpost_push
、Dockerハブのフッカーにます。
この例は、ここの stackoverflowにあります。
スレッドを完全に読み、この質問に対するほとんどの答えを試してみた後、私は最終的に私に役立つ手順を見つけました。誰かが複雑なユースケースに対処しなければならない場合でも、共有したいのですが、私がしたように、フルスレッドやgitcredentials、gitcredentials-storeなどのマニュアルページを調べたくありません。
私が提案する手順の下に検索したIF(私のような)あなたは、いくつかの別のユーザー名/パスワードの組み合わせを使用して、いくつかのプロバイダー(GitLab、GitHubの、のBitbucketなど)から複数のリポジトリに対処する必要があります。代わりに、使用するアカウントが1つしかない場合は、git config --global credential.helper store
またはgit config --global user.name "your username"
非常によく、前の回答で説明されているなどのソリューションを。
私の解決策:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
注:このコマンドは、「。git_repo_credentials」という名前の新しいファイルをホームディレクトリに作成します。このディレクトリにGitが認証情報を保存します。ファイル名を指定しない場合、Gitはデフォルトの「.git_credentials」を使用します。この場合、次のコマンドを発行するだけで十分です。
> git config credential.helper store
git config credential.*.username my_user_name
注:リポジトリが同じプロバイダー(GitLabなど)からのものである場合は、通常「*」を使用しても問題ありません。代わりに、リポジトリが異なるプロバイダーによってホストされている場合は、次の例(GitLabの場合)のように、すべてのリポジトリのプロバイダーへのリンクを明示的に設定することをお勧めします。
git config credential.https://gitlab.com.username my_user_name
この時点で、資格情報を必要とするコマンド(例git pull
:)を発行すると、「my_user_name」に対応するパスワードの入力を求められます。gitは資格情報を ".git_repo_credentials"に保存し、以降のアクセスで同じデータを自動的に使用するため、これは一度だけ必要です。
Linux Ubuntuでのrifrolのコメントから、この答えから、Ubuntuでの方法は次のとおりです:
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
他の一部のディストリビューションではバイナリを提供しているため、ビルドする必要はありません。
OS Xでは、通常、「osxkeychain」のデフォルトモジュールで「ビルド」されているため、無料で入手できます。
公式のgitドキュメントを確認してください:
リモートへの接続にSSHトランスポートを使用する場合は、パスフレーズなしのキーを使用できるため、ユーザー名とパスワードを入力せずにデータを安全に転送できます。ただし、これはHTTPプロトコルでは不可能です。すべての接続にはユーザー名とパスワードが必要です。これは、パスワードに使用するトークンがランダムに生成され発音できない2要素認証のシステムではさらに難しくなります。
幸い、Gitにはこれに役立つ資格情報システムがあります。Gitには、ボックスにいくつかのオプションが用意されています。
デフォルトでは、まったくキャッシュしません。すべての接続で、ユーザー名とパスワードの入力を求められます。
「キャッシュ」モードでは、資格情報が一定期間メモリに保持されます。パスワードはディスクに保存されず、15分後にキャッシュから削除されます。
「保存」モードでは、資格情報がディスク上のプレーンテキストファイルに保存され、期限切れになることはありません。つまり、Gitホストのパスワードを変更するまで、資格情報を再度入力する必要はありません。このアプローチの欠点は、パスワードがクリアテキストでホームディレクトリのプレーンファイルに保存されることです。
Macを使用している場合、Gitには「osxkeychain」モードが付属しており、システムアカウントに接続されている安全なキーチェーンに認証情報をキャッシュします。この方法では、資格情報がディスクに保存され、期限切れになることはありませんが、HTTPS証明書とSafariの自動入力を保存するのと同じシステムで暗号化されます。
Windowsを使用している場合は、「Git Credential Manager for Windows」と呼ばれるヘルパーをインストールできます。これは上記の「osxkeychain」ヘルパーに似ていますが、Windows資格情報ストアを使用して機密情報を制御します。それはで見つけることができ https://github.com/Microsoft/Git-Credential-Manager-for-Windows。
Git構成値を設定することにより、これらの方法のいずれかを選択できます。
$ git config --global credential.helper cache
$ git config --global credential.helper store