web-dev-qa-db-ja.com

すべてのgit Pushでユーザー名とパスワードの指定を避けるにはどうすればいいですか?

私は自分の仕事をリモートのGitリポジトリにgit Pushします。

すべてのPushusernamepasswordを入力するように私に促します。すべてのプッシュでそれを避けたいのですが、それを避けるための設定方法は?

269
Leem.fin

1. SSH鍵を生成する

Linux/Mac

ターミナルを開いてsshキーを作成します。

cd ~                 #Your home directory
ssh-keygen -t rsa    #Press enter for all values

Windowsの場合

(commitプログラムが証明書/プライベートおよび公開SSH鍵を使用できる場合にのみ機能します)

  1. PuTTY Genを使って鍵を生成する
  2. 公開SSH鍵として鍵をエクスポートする

上記のステップのためのPuTTY genの チュートリアル はここにあります

2. SSHキーをリモートリポジトリに関連付けます。

この手順は、リモコンの設定方法によって異なります。

  • GitHubリポジトリで管理権限がある場合は、 設定 に移動して[SSHを追加]をクリックします。キー'。 ~/.ssh/id_rsa.pubの内容を 'Key'というラベルの付いたフィールドにコピーします。

  • あなたのリポジトリが他の誰かによって管理されている場合、管理者にあなたのid_rsa.pubを渡してください。

  • あなたのリモートリポジトリがあなたによって管理されている場合、あなたはこのコマンドを使用することができます例えば:

    scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub

3.リモートURLをSSHをサポートする形式に設定します 1

上記の手順を実行してもパスワードプロンプトが表示される場合は、リポジトリURLが次の形式であることを確認してください。

git+ssh://[email protected]/username/reponame.git

とは対照的に

https://github.com/username/reponame.git

リポジトリのURLを確認するには、次のコマンドを実行します。

git remote show Origin

URLを変更することができます:

git remote set-url Origin git+ssh://[email protected]/username/reponame.git

[1]このセクションは Eric P からの答えを取り入れています。

290
First Zero

Gitリポジトリを使った恒久的な認証

資格情報のキャッシュを有効にするには、次のコマンドを実行します。

$ git config credential.helper store
$ git Push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

また、キャッシュ有効期限を指定する必要があります

git config --global credential.helper 'cache --timeout 7200'

認証情報のキャッシュを有効にした後、7200秒(2時間)キャッシュされます。

注:暗号化されていないパスワードをローカルディスクに保存する資格情報ヘルパー。

153
Jay Patel

SSHキーがすでに設定されていて、まだパスワードプロンプトを受け取っている場合は、リポジトリURLが次の形式であることを確認してください。

git+ssh://[email protected]/username/reponame.git

とは対照的に

https://github.com/username/reponame.git

リポジトリのURLを確認するには、次のコマンドを実行します。

git remote show Origin

次のようにgit remote set-urlでURLを変更できます。

git remote set-url Origin git+ssh://[email protected]/username/reponame.git
108
Eric P

Git Pushコマンドには--repoオプションを使うだけです。このような:

$ git Push --repo https://name:[email protected]/name/repo.git
37
Pavel

無期限に保存する

次のようにして git-credential-store を使うことができます。

git config credential.helper store

which はあなたのパスワードを暗号化せずにファイルシステムに保存します

このヘルパーを使用すると、パスワードは暗号化されずにディスクに保存され、ファイルシステムのアクセス許可によってのみ保護されます。これが許容できるセキュリティのトレードオフではない場合は、git-credential-cacheを試すか、オペレーティングシステムが提供する安全な記憶域と統合するヘルパーを探してください。

タイムアウト付き

デフォルトで15分間パスワードを保存する git-credential-cache を使用してください。

git config credential.helper cache

別のタイムアウトを設定するには、--timeoutを使用します(ここでは5分)

git config credential.helper 'cache --timeout=300'

無期限に安全に保存 (OS XおよびWindows)

  • Macを使用している場合、Gitには“ osxkeychain”モードがあります。これは、システムアカウントに添付されている安全なキーチェーンの資格情報をキャッシュします。この方法では、資格情報がディスクに保存され、期限切れになることはありませんが、HTTPS証明書とSafariの自動入力を保存するシステムと同じシステムで暗号化されます。
  • Windowsを使用している場合、「Git Credential Manager for Windows」というヘルパーをインストールできます。これは、前述の「osxkeychain」ヘルパーと似ていますが、機密情報を管理するためのWindows資格情報ストア。それは https://github.com/Microsoft/Git-Credential-Manager-for-Windows で見つけることができます。 [私の強調]
15
serv-inc

Sshリンクの代わりにhttpsリンク(https://github.com/org/repo.git)を使っていました。

[email protected]:org/repo.git  

切り替えて問題が解決しました。

8
ishan

あなたのgitクライアントをあなたのOS認証ストアに接続してください。たとえばWindowsでは、資格証明ヘルパーをwincredにバインドします。

git config --global credential.helper wincred

GitHubでhttps://を使用しているときにパスワードの入力をスキップする方法はありますか?

5
Daniel

上記の解決策について何度か指摘したいだけです。

git config credential.helper store

この後にパスワードを必要とする任意のコマンドを使用できます。あなたはプッシュする必要はありません。 (あなたはまた、例えばプルすることができます)その後、あなたは再びあなたのユーザー名/パスワードを入力する必要はありません。

4
TrollAxeThrower

Windowsオペレーティングシステムでは代わりにこれを使用してください、これは私のために働きます:

https://{Username}:{Password}@github.com/{Username}/{repo}.git

例えば.

git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git

git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git

git remote add Origin https://{Username}:{Password}@github.com/{Username}/{repo}.git

git Push Origin master

私はパベルが示唆した答えを使いました、そしてそれは私のために働きました。私の違いは、私がそのようにリモートを追加している間にそれをすることでした:git remote add (alias) https://(name:password)@github.com/(the remote address).git

3
dsmryder

Windowsでの私の解決策:

  1. ディレクトリを右クリックしてプッシュし、[Git Bash Here]を選択します。
  2. ssh-keygen -t rsa(すべての値に対してEnterキーを押します)
  3. 端末をチェックしてください:Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
  4. 指定されたファイルから公開鍵をコピーします。
  5. GitHubのプロフィールに行く=>設定=> SSHとGPGキー=>新しいSSHキー=>そこにあなたのSSHキーを貼り付ける=>保存
2
Мони Мон

下記のコマンドを実行すると問題が解決しました。

git config --global credential.helper wincred

下記のgithubのドキュメントを参照してください。

https://help.github.com/articles/caching-your-github-password-in-git/
2
Krishna

私の知る限りでは、単純にsafeの2つの方法があります:sshまたはpasswdはキーストアを使用して暗号化されています。

SSH

  1. あなたのgithubにログインしてください。
  2. 訪問: https://github.com/settings/keys ;
  3. 新しいSSHキー
  4. cat ~/.ssh/id_rsa.pub、そこに貼り付け、名前を付けて保存します(そのようなファイルがない場合は、ssh-keygen -t rsaで自分で作成します - すべてのプロンプトに対してEnter)。
  5. あなたのローカルリポジトリに行き、git remote set-url Origin git+ssh://[email protected]/username/reponame.gitであなたのリモートを更新してください - あなたはgit remote -vで最初にそれをチェックすることができます。
  6. ここでは、touch t; git add t; git commit -m "test"; git Pushと入力し、password-freeの世界を楽しむためにyesを確認します。

キーストアを使用してpasswd ENCRYPTED

他の人が述べたようにgit config --global credential.helper storeを使うだけでは、あなたの暗号化されていないパスワードは~/.git-credentialsの下にプレーンテキストで保存されるだけで、安全ではありません。

encryptにしてみてください

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

git config --global credential.helper store

この場合、あなたはhttps://[email protected]/username/reponame.gitを使っています。

2
Hearen

PCが安全であるか、パスワードのセキュリティを気にしない場合、これは非常に簡単に実現できます。リモートリポジトリがGitHubにあり、Originがリモートリポジトリのローカル名であると仮定して、このコマンドを使用します

git remote set-url --Push Origin https://<username>:<password>@github.com/<repo>

--Pushフラグにより​​、git PushコマンドのみのリポジトリのURLが変更されます。 (元の投稿で尋ねられた質問は、git Pushコマンドのみに関するものです。プッシュ操作にのみユーザー名とパスワードを要求するのは、publicGitHub上のリポジトリ.GitHub上のprivateリポジトリもプルおよびフェッチ操作のためにユーザー名とパスワードを必要とすることに注意してください。 --Push flagを使用したい...)

警告:これは本質的に安全ではありません:

  1. iSP、またはネットワークアクセスをログに記録しているユーザーは、URL内のプレーンテキストでパスワードを簡単に確認できます。

  2. pCにアクセスできる人は誰でもgit remote show Originを使用してパスワードを表示できます。

そのため、SSHキーを使用することが回答として受け入れられています。

SSHキーでさえ完全に安全ではありません。 PCにアクセスできるユーザーは誰でも、たとえば、リポジトリを破壊するプッシュを行うことができます。さらに悪いことに、コードに微妙な変更を加えるプッシュコミットを行うことができます。 (プッシュされたコミットはすべてGitHubで明らかに表示されます。しかし、誰かがコードをひそかに変更したい場合は、コミットメッセージを変更せずに以前のコミットを--amendし、それを強制的にプッシュできます。実際に注意してください。)

しかし、パスワードの公開はworseです。攻撃者がユーザー名とパスワードを知った場合、自分のアカウントからロックアウトしたり、アカウントを削除したり、リポジトリを完全に削除したりすることができます。


または、簡単にするためにandセキュリティ-URLにユーザー名のみを指定することができるため、入力する必要がありますgit Pushのたびにパスワードを入力しますが、毎回ユーザー名を入力する必要はありません。 (私はこのアプローチがとても好きです。パスワードを入力しなければならないので、git Pushを考えるたびに一時停止するので、偶然git Pushすることはできません。)

git remote set-url --Push Origin https://<username>@github.com/<repo>
2
radfast

ステップ1 -

下記のコマンドを使用して、Linuxシステム上にSSHキーを作成してください。

ssh-keygen -t rsa -b 4096 -C "your_email"

パスフレーズとファイル名を要求します(デフォルトは〜/ .ssh/id_rsa、〜/ .ssh/id_rsa.pubです)。

ステップ2 -

ファイルが作成されたら、githubアカウントのsshセクションに公開鍵id_rsa.pubを追加します。

ステップ3 -

あなたのマシン上で下記のコマンドを使用してssh-agentに秘密鍵id_rsaを追加してください。

ssh-add ~/.ssh/id_rsa 

ステップ4 -

以下のコマンドを使用して、リモートの[email protected]:user_name/repo_name.gitをローカルのgitリポジトリに追加します。

git remote remove Origin
git remote add Origin [email protected]:user_name/repo_name.git

それでおしまい。

1
Anil Agrawal

これは、gitがclone/pull/push/fetchコマンドでパイプを通して資格情報を送信するためのオプションを提供していないために起こります。それは、credential.helperを与えますが、ファイルシステムに保存したり、デーモンを作成したりします。多くの場合、GITの認証情報はシステムレベルのものであり、それらを安全に保つのはgitコマンドを呼び出すアプリケーションにあります。非常に危険です。

これが私が回避しなければならなかったことです。 1. Gitのバージョン(git --version)は1.8.3以上でなければなりません。

GIT CLONE

クローン作成には、URLをhttp:// {myuser} @ {my_repo_ip_address}/{myrepo_name.git}からhttp:// {myuser}:{mypwd} @ {my_repo_ip_address}の形式に変更してから「git clone URL」を使用します。 /{myrepo_name.git}

次に、次のセクションのようにパスワードのリポジトリを削除します。

消去

今、これは行っているだろうと

  1. git remote Originでパスワードを書きました。損傷を確認するには、 "git remote -v"と入力してください。これを修正するには、パスワードなしでリモートのOrigin URLを設定します。 "gitリモートset_urlオリジンhttp:// {myuser} @ {my_repo_ip_address}/{myrepo_name.git}"
  2. リポジトリの.git/logsにパスワードを書きます。 find .git/logs -exec sed -i '/ {my_url_with_pwd} // g' {} \;のようなunixコマンドを使用して、pwdのすべてのインスタンスを置き換えます。ここで、{my_url_with_pwd}はパスワード付きのURLです。 URLにはスラッシュがあるので、2つのスラッシュでエスケープする必要があります。例えばURLの場合 http:// kris:[email protected]/proj.git - > http:\\/\\/kris :[email protected] \\/proj.git

アプリケーションがこれらのコマンドを発行するためにJavaを使用している場合は、RuntimeではなくProcessBuilderを使用してください。 Runtimeを使用する必要がある場合は、単一のStringを引数として使用するのではなく、/ bin/bashおよび-cを引数として使用してString配列を引数として使用するgetRunTime()。execを使用します。

GIT FETCH/PULL /プッシュ

  1. gitリモートURLにパスワードを設定します。 "git remote set_url Origin http:// {myuser}:{mypwd} @ {my_repo_ip_address}/{myrepo_name.git}"
  2. コマンドgit fetch/Push/pullを発行します。パスワードの入力を求められることはありません。
  3. 前のセクションと同じようにパージを行います。見逃さず。
1
Krishna

少なくともWindows上でTortoiseGITを使用している場合、SSHキーを作成してGITサーバーに転送することが可能です。

> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]
0
EquipDev

あなたはSSH秘密鍵をセットアップしなければなりません、あなたはこの ページ を見直すことができます、あなたがLinux上にいるならガイドはあるべきですほぼ同じですが、Windowsでは MSYS のようなツールが必要です。

0
RageZ