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


118

私はグーグルで試してみて、https://help.github.com/en/articles/connecting-to-github-with-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. タイプミスをせずに適切なリモートオリジン追加しました。git remote add origin git@github.com:medero/cho.git

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

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -v認証が成功する

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

こんにちはmederot!認証は成功しましたが、GitHubはシェルアクセスを提供していません。

9.プロキシやファイアウォールの背後にいない

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 git@github.com:medero/cho.git
git push -u origin master

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

13. sshを使用してgit cloneし、編集、コミット、および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ユーザー名がNOTでmederotあり、私のgithubトークンがアカウントページごとに正しいことを確認しました(最初の2文字と最後の2文字が検証されています)。

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

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

18.それがssh-key add ~/.ssh/id_rsa必要なら私もしました...



理論:

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

また、ローカルのsshキャッシングの奇妙さを疑っています。なぜなら、i mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO、およびを実行ssh git@github.com -vした場合でも、それは私を認証し、名前を変更したときに/home/meder/.ssh/id_rsaにサービスを提供すると言っているからです。キャッシュする必要がありますか?


「Github for Windows」を使用していますが、2つのGithubアカウントを切り替えると同様の問題が発生しました。ここに私のソリューションです: stackoverflow.com/questions/18565876/...
アリサ

2つの異なるローカルリポジトリから対応するオリジンリモートリポジトリにプッシュする場合は、これを確認してください:stackoverflow.com/q/63291726/12033855
an4s911

回答:


35

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

私はまた、mv〜/ .ssh / id_rsa KAKAおよびmv〜/ .ssh / id_rsa.pub POOPOOを実行し、ssh git@github.com -vを実行すると、それでも私を認証し、それが機能すると言うので、ローカルsshキャッシングの奇妙さを疑っています名前を変更したときの/home/meder/.ssh/id_rsa ?! キャッシュする必要がありますか?

... ssh-agentキーがキャッシュされているためです。

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

したがって、私は(可能性の降順で)次のいずれかが当てはまると考えています。

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

1でない場合は、GitHubに報告して、2または3について確認できるようにします。

もっと :

ssh-add -l複数のIDが存在するかどうかを確認し、存在する場合はssh-add -d "そのキーファイル"で削除します。


マークを助けて!これで修正されました。
Leachy Peachy

これでおしまい。あなたは私に巨大な頭痛を救った。ssh-add ...github / sshログインを切り替えるたびに実行することを忘れないでください。
セリン

何らかの理由でssh-add -d <keyfile>動作しません。(ファイルを手動で削除した。)あなたが言及したキャッシングは、どういうわけか手動でリロードする必要があります。どうやって?
not2qubit

ssh-add -d->「認証エージェントへの接続を開けませんでした。」
アレックス

ssh-add私のためにそれをやった少しでした。ありがとう!
rayryeng

159

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

しかし、私は問題を解決しました!だから私はこの問題を探している人を助けるためにここに私の答えを入れています。

これが私がしたことです:

  1. 「Keychain Access.app」を開きます(SpotlightまたはLaunchPadにあります)

  2. カテゴリで「すべてのアイテム」を選択します

  3. 「git」を検索

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

  5. もう一度プッシュしてみてください、それはうまくいきました


17
仲間を高く評価します。あなたはヒーローです。
バンサル王子2015年

1
地獄はい、最後に、無数のSSHキーで苦労した後、これがうまくいきました!Macおよびhttpsアクセスはキーチェーンを使用しているようです。クレイジー。
Patrick Chu、

1
これを週間解決するために試みているBLESS YOU IVE
Jon Hendershot 2017

1
非常に役立つようですが、何であるか不明ですold & strange。私はたくさんのものを台無しにしようとしています...
地球理論2017

1
@geotheoryこれらold & strangeは、古い日付のアイテムと誤ったメールまたはユーザー名を意味します。でテーブルをソートできますDate Modified
アリスチャン

91

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

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

ここに画像の説明を入力してください ここに画像の説明を入力してください

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


2
完璧です。もう使用しないアカウントで403アクセスしていました。今解決しました。
アントンエピキン2017年

1
github.comの資格情報を削除するだけで十分でした
Bart De Boeck

また、ユーザー名などを変更できます。それが方法です。
WesternGun、2014年

実際にこれもうまくいきましたが、2つの異なるアカウントがある場合はどうすればよいですか?
an4s911

22

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

git remote set-url origin https://username@github.com/username/repo-name.git

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


1
ありがとう、これでうまくいきました。パスワードの入力を求められ、パスワードを入力した後、プッシュすることができました。とても有難い!
ピクセル

...しかし、これはWindowsでは問題を解決せず、Macでのみ解決しました
ピクセル

...しかし、Windowsで資格情報をクリーンアップするための上記の@Fahid提案は役に立ちました
pixel

あなたはヒーローです。
Vaibhav

これは、異なるアカウントに属する複数のgithubプロジェクト
Gangadhar JANNU

14

それは紛争によるものです。

ssh-agentからすべてのキーをクリアする

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

github sshキーを追加する

ssh-add   ~/.ssh/github

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


3
またssh-add -D、すべてのIDを削除します。エージェントが無効な状態になった場合に役立ちます。
サム

6

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

  1. 「Keychain Access.app」を開きます(SpotlightまたはLaunchPadにあります)
  2. カテゴリで「すべてのアイテム」を選択します
  3. 「git」を検索
  4. すべての古くて奇妙なアイテムを削除しますもう一度プッシュしようとすると、それはうまくいきました

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


6

解決策は古いユーザー名が保存されているキーチェーンアクセスアプリである@spyarと同じであることがわかります。

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

  1. キーチェーンアクセスの情報を削除する
    • キーチェーンアクセスアプリを開く
    • githubを検索
    • 対応する資格情報を削除する

または

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

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

git@github.com:username / repo.git

お役に立てれば。


2

最近、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を使用するようにオリジンを再設定します

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

新しいリモコンの確認

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

これで成功することができた git push -u origin

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


エラー:unrealcv / synthetic-computer-vision.gitへのアクセス権がmonajalalに拒否されました。致命的:リモートリポジトリから読み取れませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。
モナジャラル

1

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

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

また、問題の原因はアカウント名の入力ミスにあると思います。


0

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

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

それらを見つけるには、以下を実行します。

ps aux | grep '\[mux\]'

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


0

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


0

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

私は最終的に、Travisアカウントに関連付けられたGitHub 個人アクセストークンをpublic_repoスコープアクセス許可で更新することで問題を解決しました。

<code> public_repo </ code>を選択します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.