web-dev-qa-db-ja.com

Gitの有名な「エラー:ユーザーへの.gitへのアクセス許可が拒否されました」

グーグルで試し、 http://help.github.com/troubleshooting-ssh/ およびさまざまなガイドを読みました。 git Push -u Origin masterまたはgit Push Origin master(同じコマンド)ができません。

少なくとも2年ほどGitアカウントを持っています。私は自分のラップトップでリポジトリとPush -u Origin masterを正常に作成できましたが、このデスクトップでは問題が発生しています。

ここに私が試したものがあります:

1。gitユーザー名を設定しました

2。gitユーザーのメールを設定しました

3。/home/meder/.ssh/id_rsa.pubのコンテンツをgithubのアカウントページにアップロードしました。空白を貼り付けていないことを確認しました

4。これらの内容で〜/ .ssh/configを作成しました:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

.sshを700、id_rsa 600に変更しました。

5。properリモートOriginタイプミスなしgit remote add Origin [email protected]:medero/cho.git

6。#5を確認するために、ここに私の.git/configを示します。ディレクトリはcorrectであり、別のディレクトリではありません:

[remote "Origin"]
        fetch = +refs/heads/*:refs/remotes/Origin/*
        url = [email protected]:medero/cho.git

7。ssh [email protected] -vは認証に成功します

8。奇妙なことの1つは、挨拶するユーザー名にtが追加されていることです。私のgithubユーザー名はmederoではなくmedertです。

こんにちはメデロット!認証に成功しましたが、GitHubはシェルアクセスを提供しません。

9。私はnotプロキシまたはファイアウォールの背後にいます

10。キーが提供されます。ここに-vからの出力があります:

debug1: Host 'github.com' is known and matches the RSA Host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11。ここに私が使用したコマンドがあります

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add Origin [email protected]:medero/cho.git
git Push -u Origin master

12。新しいSSHキーを作成したくありません。

13。sshを使用してクローンをgitし、編集、コミット、およびgit Pushを行うと、まったく同じ結果が得られます。

14。実際のエラーは次のとおりです。

$ git Push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15。githubユーザー名とgithubトークンを設定しました:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789tokenシステム上のすべてのgitインスタンスのGitHubトークンを設定します

16。githubユーザー名がmederotではなく、githubトークンISがアカウントページごとに正しいことを確認しました(検証済みの最初の2文字と最後の2文字)。

17。#16を確認するには、〜/ .gitconfigに

[github]
    token = mytoken...
    user = medero

18。必要であればssh-key add ~/.ssh/id_rsaをしました...



理論:

Sshで認証されたとき、ユーザーの挨拶はmederotではなくmederoであるため、怪しいものがあると思います。これは私のアカウントです。 githubアカウントの何かが誤ってキャッシュされる可能性はありますか?

私はmv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOOを実行し、ssh [email protected] -vを実行しても、まだ認証され、/ home/meder/.ssh/id_rsaを提供すると言うので、ローカルのsshキャッシュの奇妙さを疑います。名前を変更しましたか?!キャッシュする必要がありますか?!

103
meder omuraliev

ステップ18では、ssh-add ~/.ssh/id_rsaを意味すると思いますか?もしそうなら、それはこれを説明します:

また、ローカルのsshキャッシングの奇妙さも疑います/home/meder/.ssh/id_rsaの名前を変更したとき!?キャッシュする必要がありますか?!

... ssh-agentがキーをキャッシュしているため。

GitHubを見ると、 mederot アカウントがあります。これはあなたとは何の関係もないと確信していますか? GitHubでは、[email protected]:... URLを使用している場合、SSHキーに基づいてユーザーを識別するため、同じSSH公開キーを2つのアカウントに追加することはできません。 (これが許可されるべきではないことは確認されています ここ 。)

したがって、次のいずれかが当てはまると考えられます(尤度の降順で)。

  1. 以前にmederotアカウントを作成し、SSHキーを追加しました。
  2. 他の誰かがあなたの公開鍵のコピーを取得し、それをmederot GitHubアカウントに追加しました。
  3. GitHubには恐ろしいバグがあります。

1が当てはまらない場合は、GitHubに報告するため、2または3について確認できます。

もっと :

ssh-add -l複数の識別情報が存在するかどうかを確認し、存在する場合は、ssh-add -d "that key file"で削除します

34
Mark Longair

数日間グーグルで調べた後、これが私の状況に似た唯一の質問であることがわかりました。

しかし、私はちょうど問題を解決しました!そこで、この問題を探している他の人を助けるために、ここに答えを掲載しています。

ここに私がやったことがあります:

  1. 開く"キーチェーンAccess.app"(SpotlightまたはLaunchPadで見つけることができます)

  2. カテゴリで"All items"を選択します

  3. 検索"git"

  4. 古くて奇妙なアイテムをすべて削除する

  5. もう一度プッシュしてみてください、それはちょうど働いた

145
Alice Chan

Windowsで問題が発生している場合は、Windowsの履歴から資格情報を削除します。

  • 資格情報マネージャーに移動
  • Windows資格情報に移動
  • Generic Credentialsの下のエントリを削除します
  • もう一度接続してみてください。今回は、正しいユーザー名とパスワードの入力を求められます。

enter image description hereenter image description here

gitから資格情報を削除する

73
FAHID

競合が原因です。

Ssh-agentからすべてのキーを消去します

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Github sshキーを追加します

ssh-add   ~/.ssh/github

これで動作するはずです。

12
Sarvesh

Macでは、複数のGitHubログインがあり、SSHを使用してnotの場合、次を使用して正しいログインを強制します。

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

これは、プライベートリポジトリへのプッシュに問題がある場合にも機能します。

9
leanne

ソリューションは@spyar提供と同じであり、これは古いユーザー名を保存したKeychain Accessアプリです。

この状況には2つの解決策があります。

  1. によるKeychain Accessの情報を削除します。
    • OpenKeychain Accessアプリ
    • githubを検索
    • 対応する資格情報を削除する

または

  1. 使用する場合はsshキーを使用します。リポジトリのURLをhttpsから変更するだけです

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

[email protected]:username/repo.git

お役に立てれば。

6
thuanle

私はMacを使用していますが、キーチェーンアクセスアプリからgithubレコードを削除することで問題が解決しました:ここに私がやったことです:

  1. 「Keychain Access.app」を開きます(SpotlightまたはLaunchPadで見つけることができます)
  2. カテゴリで「すべてのアイテム」を選択します
  3. 「git」を検索
  4. すべての古いアイテムや奇妙なアイテムを削除します。もう一度プッシュしてみてください。

上記の手順は、簡単にするために@spyarからコピーされます。

6
Deepak Bhatta

私は最近、httpsを使用してプッシュされた私のマシンの古いリポジトリでこの問題に遭遇しました。ステップ5と6は、https urlからssh urlへの使用からリポジトリのリモートURLを再設定することで問題を解決しました

リモートがhttps URLを使用していることを確認する

> git remote -v
Origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
Origin  https://github.com/ExampleUser/ExampleRepo.git (Push)

次に、ssh urlを使用するようにOriginを再設定します

> git remote set-url Origin [email protected]:ExampleUser/ExampleRepo.git

新しいリモートの確認

> git remote -v
Origin  [email protected]:ExampleUser/ExampleRepo.git (fetch)
Origin  [email protected]:ExampleUser/ExampleRepo.git (Push)

正常にgit Push -u Originできました

リモートがhttpsのときにプッシュが失敗する可能性のある設定を変更したかどうかはまだわかりませんが、これは私の問題の解決策でした

1
PhilVarg

私はあなたと同じ問題を抱えていました。グーグルで長い時間を過ごした後、自分のエラーはアカウントに同じキーを追加した複数のユーザーが原因であることがわかりました。

だから、ここに私の解決策があります:間違ったユーザーのssh-keyを削除します(間違ったユーザーは私のアカウントでもあるので、それを行うことができます)。間違ったユーザーがあなたのアカウントでない場合、ssh-keyを変更する必要があるかもしれませんが、私はこれが起こるとは思いません。

そして、私はあなたの問題があなたのアカウント名のミスタイプミスによって引き起こされると思うと思います。

1
Perth Charles

Travis CIを コンテンツのデプロイ に使用すると、このエラーが発生しました。これには、編集をリポジトリにプッシュすることが含まれていました。

最終的に、public_repoスコープアクセス許可を持つTravisアカウントに関連付けられているGitHub パーソナルアクセストークン を更新することで問題を解決しました。

Select <code>public_repo</code>

0
ms609

この問題は、次の原因でも発生します。

Mac/Linuxを使用しており、〜/ .ssh/configで「ControlMaster」を使用している場合、いくつかのsshコントロールマスタープロセスが実行されている可能性があります。

それらを見つけるには、次を実行します:

ps aux | grep '\[mux\]'

そして、関連するものを殺します。

0
Bash

私にとっては、FAHID(Windowsの場合)およびLEANNE(Macの場合)によって提案された解決策のみが機能しました。あなたがた両方に感謝します!

0
pixel

私もこれに遭遇しました。これを引き起こしたのは、変更をプッシュしているレポのクローンを作成中に、サインインせずにシークレットタブからクローンURLを選択したためです(その影響についてはまだわかりません)。なんらかの理由でgitが別のユーザーアカウントを選択することになりました。適切なサインインページからもう一度試してみたところ、いつものように機能しました。

0
rajoriav