web-dev-qa-db-ja.com

Git Pushにはユーザー名とパスワードが必要です

私のGithubアカウントから自分のPCにgitリポジトリをクローンしました。

私は自分のPCとラップトップの両方で作業したいが、1つのGithubアカウントで作業したい。

私のPCを使ってGithubにプッシュしたり、Githubからプルしようとすると、ユーザー名とパスワードが必要になりますが、ラップトップを使用するときには必要ありません。

Originとやりとりするたびに自分のユーザ名とパスワードを入力したくはありません。ここで何が足りないの?

1224
TooCooL

よくある間違いは、SSHの代わりにデフォルト(HTTPS)を使用して複製することです。これを修正するには、リポジトリに移動して[クローン作成またはダウンロード]をクリックし、次にURLフィールドの上にある[SSHを使用]ボタンをクリックして、OriginのリモートURLを次のように更新します。

git remote set-url Origin [email protected]:username/repo.git

これはGitHubで文書化されています: HTTPSからSSHへのリモートURLの切り替え

1730
Tekkub

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

次のコマンドを実行して 認証情報のキャッシュ を有効にします。

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

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

caching expire を使用することもできます。

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

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

265
Jay Patel

私はちょうど同じ問題に出会いました、そして私が見つけた最も簡単な解決策はHTTPSの代わりにSSH URLを使うことでした:

ssh://[email protected]/username/repo.git

そしてこれではない:

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

usernamepasswordの代わりに just SSH Keyで検証できるようになりました。

127

SSHへの変更とは別に、パスワードを平文で入力しても構わない場合は、HTTPSを使用し続けることもできます。これをあなたの~/.netrcに入れると、あなたのユーザ名/パスワードを尋ねることはありません(少なくともLinuxとMacでは):

machine github.com
       login <user>
       password <password>

追加 (VonCの2番目のコメントを参照):Windowsではファイル名は%HOME%\_netrcです。

暗号化したい場合のために、VonCの最初のコメントも読んでください。

もう1つの追加 (user137717のコメントを参照) git 1.7.10以降の場合に使用できます

クレデンシャルヘルパーを使ってgithubのパスワードをgitにキャッシュしてください

HTTPSを使用してGitHubリポジトリを複製する場合は、GitHubと通信するたびにGitHubのユーザー名とパスワードを覚えておくようにGitに伝えるために認証ヘルパーを使用できます。

これはLinux、Mac、Windowsでも動作します。

114
rintcius

前の答えで混乱している初心者のために、あなたはすることができます:

git remote -v

これは次のように反応します

Origin  https://[email protected]/yourname/yourrepo.git (fetch)
Origin  https://[email protected]/yourname/yourrepo.git (Push)

それからあなたは他の多くが提案したコマンドを実行することができます、しかし今、あなたは上からyournameとyourrepoを知っているので、あなたはただ上からyourname/yourrepo.gitをカットアンドペーストすることができます

git remote set-url Origin [email protected]:yourname/yourrepo.git
77
Davide

出典: セットアップGit

次のコマンドはしばらくの間パスワードをメモリに保存します。
git 1.7.10 以降の場合)

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
46
Sagar Rakshe

Git pull&Pushに https を使用する場合は、プッシュするたびに入力ユーザー名(または/およびパスワード)を避けるために、プロジェクトのconfig remote.Origin.urlだけを使用してください。

remote.Origin.urlの設定方法:

 URLフォーマット:
 https:// {ユーザー名:パスワード@} github.com/ {所有者}/{リポジトリ} 
 
 urlのパラメータ:
 [username] [username]オプション、認証が必要な場合に使用するユーザー名、指定されている場合は認証が必要な場合にユーザー名を再入力する必要がない、[email]を使用しない、[use] "@"を含まないユーザー名、そうでないとURLを正しく解析できません。
 * password 
オプション、認証が必要な場合に使用するパスワード、
を指定した場合、no認証が必要な場合はパスワードを再入力する必要があります。
ヒント:
この値はプレーンテキストとして保存されるため、セキュリティ上の理由から、このパラメータは指定しないでください[
] * [.____例:
 git config remote.Origin.url https://[email protected]/eric/myproject 
 

@Update - sshを使う

セットアップ手順はもう少し複雑ですが、sshプロトコルを使用するほうがhttpsよりも優れた解決策だと思います。

大まかなステップ:

  • コマンドを使用してsshキーを作成します。例えば、Linuxではssh-keygen、ウィンドウではmsysgitは同様のコマンドを提供します。
  • ローカルマシンのプライベートキーは適切な場所(例:~/.ssh)に保管してください。そしてssh-addコマンドでsshエージェントに追加してください。
  • 公開鍵をgitサーバーにアップロードします。
  • Gitリポジトリのremote.Origin.urlsshスタイルに変更してください、例えば[email protected]:myaccount/myrepo.git
  • その後プルまたはプッシュすると、ユーザー名やパスワードを入力する必要がなくなります。

ヒント:

  • SSHキーにパスフレーズがある場合は、デフォルトで、マシンを再起動するたびにそのキーを初めて使用するときにそれを入力する必要があります。

@Update - httpsプロトコルとsshプロトコルを切り替えます。

単にremote.Origin.urlを変更するだけで十分です、またはrepo_home/.git/configを直接編集して値を変更することができます(例えば、Linuxではviを使用)。

通常、プロトコルごとに1行追加し、そのうちの1つを#を使用してコメントアウトします。

 [remote "Origin"] 
 url = [email protected]:myaccount/myrepo.git 
#url = https://[email protected]/myaccount/myrepo .git 
 fetch = +参照/ヘッド/ *:参照/リモート/起点/ * 
30
Eric Wang

GitHubのパスワードをGitにキャッシュすることができます。

Githubの 公式ドキュメント の指示に従ってください。

上記のリンクからの指示に従った後、あなたは毎回あなたのユーザー名/パスワードを入力せずにあなたのレポに/からpush/pullすることができるはずです。

15

私にとってうまくいったのは.git/configを編集して使うことでした

[remote "Origin"]
        url = https://<login>:<password>@gitlab.com(...).git

言うまでもなく、これはあなたのパスワードを保存するための安全でない方法ですが、これが問題にならないかもしれない環境/ケースがあります。

8
WoJ

これは別の選択肢です:

書く代わりに

git Push Origin HEAD

あなたが書くことができます:

git Push https://user:[email protected]/path HEAD

ほとんどのシェルでは明らかにこれはパスワードが履歴にキャッシュされることになるので、それを覚えておいてください。

7
Lacho Tomov

HTTPS用のアップデート:

Githubは、HTTPSを使用しているときに資格情報を保存するWindows用の新しいプログラムを立ち上げました。

使用するには:

here からプログラムをダウンロードしてください。

あなたがプログラムを実行すると、それはあなたの.gitconfigファイルを編集します。複数ある場合は、正しい.gitconfigを編集したかどうかを再確認してください。正しいものを編集していない場合は、.gitconfigに以下を追加してください。

[credential]
    helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'

[credential]の後で改行してください。必須です。

コマンドラインクライアントを開き、git Push Origin masterを1回試してください。パスワードの入力を求められたら、それを入力してください。パスワードを保存しました

4
Varun Achar

基本的に2つの選択肢があります。

両方のマシンで同じユーザーを使用している場合は、.pubキーをPCにコピーする必要があるので、githubは自分が同じユーザーであることを認識しています。

あなたのPC用に新しい.pubファイルを作成し、それらのマシンを異なるユーザーとして扱いたい場合は、github Webサイトに新しい.pubファイルを登録する必要があります。

それでもうまくいかない場合は、sshが正しく設定されておらず、そのsshが鍵の場所を見つけられないことが原因の可能性があります。やってみる

ssh -vv [email protected]

SSHが失敗する理由を詳しく知るために。

4
ralphtheninja

Windows gitユーザーの場合、git config --global credential.helper storeを実行した後で、まだパスワードの入力を求められる場合は、設定の書き込み先を確認してください。このコマンドを使う

git config --list --show-Origin

私の場合は、手動で設定ファイル 'C:\ Program Files\Git\mingw64\etc\gitconfig'を編集して、以下のテキストを追加しても動作します。

[credential] helper = store

2
Liang

私は同じ問題を抱えていました。

プロジェクトから.git/configファイルを変更してください。

url = https://github.com/<your-user-here>/<your-repo-here>

url = [email protected]:<your-user-here>/<your-repo-here>

設定中のgitプロファイルにssh公開鍵を追加します。

sSH公開鍵用

cat ~/.ssh/id_rsa.pub
2
shrikant

これは私のために働いたものです:

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

例:

git remote set-url Origin https://[email protected]/jsmith/master.git
1
user5854766

あなたは2つのステップを実行する必要があります -

1) git remote remove Origin
2) git remote add Origin [email protected]:NuggetAI/nugget.git

GitのURLがsshのURLであり、httpsのURLではないことに注意してください。ここから選択できます。

enter image description here

1
sapy

あなたのgit設定ファイルを直接更新する: 空想コマンドを記憶したくない場合

お気に入りのテキストエディタで.git/configファイルを開きます。それはあなたがクローンしたフォルダか、あなたがgit initを実行したレポジトリの中にあるでしょう。そのレポジトリに行ってください。 .gitは隠しフォルダです。ctrl + hを押すと隠しフォルダが表示されます(ターミナルのls -a)。

これは.git/configファイルのサンプルです。これらの行をコピーして貼り付け、git情報でそれらの行を必ず更新してください。

[user]
        name = Tux
        email = [email protected]
        username = happy_feet

[remote "Origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/Origin/*

SSHの場合は、次の形式でURL部分を変更します。

url = [email protected]:happy_feet/my_code.git

上記のフォーマットはgithubやbitbucketのような様々なgitリモートサーバーでは変わりません。バージョン管理にgitを使っている場合も同じです ):

注: リモートのgitリポジトリに接続するSSHの方法では、あなたのgitリモートサーバーにあなたの公開SSHキーを追加する必要があります( githubやbitbucketのように、SSHキーの設定ページを検索します

SSH鍵の生成方法を知るには、次を参照してください。https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html

1
Survesh Jones

Sshキーや.netrcがうまくいかなかった場合は、 git-credential-store - ディスクに資格情報を保存するためのヘルパーがあります。

git config --global credential.helper store

デフォルトでは、認証情報は~/.git-credentialsに保存されます。それは作成されて書き込まれます。

このヘルパーを使用すると、パスワードは暗号化されずにディスクに保存され、ファイルシステムのアクセス許可によってのみ保護されます。これが許容できるセキュリティのトレードオフではない場合があります。

0
rumman0786

多くのユーザーが言っているように、あなたはちょうどあなたのgitリポジトリURLをhttpsからSSHに変更する必要があります。

あなたのマシンでSSHキーを生成していなければ、あなたはそれをしなければならないでしょう。

追加の情報として、この変更を行った後も同じエラーが表示されました:アクセス許可が拒否されました。

私の場合、問題はWindowsシェルを使用してnghコマンドを実行していたことです。このコマンドはSSHフレーズを要求するためのプロンプトを開くはずであり、Windowsシェルはこの種のプロンプトを開かないので、認証は失敗しただけです。

それで、私はただgitシェルを開いてそこでnghコマンドを実行し、それが要求される度にプロンプ​​トにSSHフレーズを入れて「voilà」としなければなりませんでした...それはちょうどうまくいきました!

0
Thisisalexis

Windowsでgit(例えばgit bash)を使用している場合(そしてhttpsからsshに切り替えたくない場合)

https://github.com/Microsoft/Git-Credential-Manager-for-Windows を使うこともできます

このアプリケーションはあなたのためにユーザ名とパスワードを保管します...

0
boly38