1. ホーム
  2. github

リモートの解決方法 git の使用中に xxx への権限が拒否される問題が発生しました。

2022-02-13 06:42:48

状況はざっとこんな感じで、当初はgithubのアカウント(とりあえずAアカウントとします)を登録し、Android Studioと関連付け、このアカウントでリモートリポジトリをいくつか作成していました。ある日突然、Aという名前が気持ち悪くて覚えられないと感じ、Aアカウントを削除して別のBアカウントを登録しました。最近、デモを書いていて、そのデモをgithubにアップロードしようと思ったら、ローカルリポジトリは構築されて、プロジェクトは正常にコミットされているのに、最後のステップのリモートリポジトリへのプッシュで、エラーが報告されてずっと表示されたままになっています。

リモート B/Demo.git へのアクセス許可  拒否  to A.fatal: unable to access 'https://github.com/A/Demo.git/'。要求されたURLはエラーを返しました。403大まかな意味は、許可されていない原因分析実際に私が理解している具体的な原理は、この記事によると、非常に明確ではありません。 Gitの最も有名なエラーは、"ERROR: XXX.git へのアクセス権が拒否されました。  ユーザー "究極の解決策ということで、理由はざっとこんな感じです:AアカウントとBアカウントが同じ公開鍵を追加しており、githubを操作するとどちらのユーザーが安全にログインしているのかわからなくなってしまうのだそうです。Aアカウントは以前ログインしていたので、Bアカウントはこの時公開鍵でログインすることはできないことになります。幸い、1つのアカウントは複数の公開鍵を持つことができるので、アカウントBの公開鍵を再生成して、この新しい公開鍵を使って操作することができます。醜いスケッチを作成(visoはもう使えない...)。

解決方法

1. 新しいSSH KEYを生成する 
git bash 端末入力コマンド(""の中身は自分で取ることができます。)

$ ssh-keygen -t rsa -C "IWindow_personnal_publicKey"

次に、単にEnterキーを押すのではなく、アカウントAのrsaファイルと区別するために、rsaファイルの名前を設定します。

/Users/Apple/.ssh/id_rsa_bcount

次の2つは直接Enterキーを押してください。 
gitコマンド全体のスクリーンショットは以下の通りです。


2. GitHubに新しく生成されたSSHキーを追加する。 
.sshフォルダを開き、先ほど生成したid_rsa_bcountファイルを見つけ、それを開いて中身をコピーします。ここではメモ帳ソフトで開きました。


次にgithubの[New SSH key]ボタンをクリックし、コピーしたrsaの内容を鍵入力ボックスに貼り付け、[Add SSH Key]をクリックすると新しいssh鍵が生成されます。 

3. 3. ~/.ssh/config ファイルを開いてください。 
まず、.sshフォルダの下にconfigファイルがあるかどうかを確認し、なければconfigファイルを作成します。 
コンフィグを作成するためのコマンドライン。

$ git touch config

次に、新しいホストを追加する必要があります。私は github-bcount と名付けました。 
これは、設定ファイルをメモ帳で開いて、以下をコピーすることで行います。

Host github-bcount
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_BCount

そして、設定ファイルを保存します。 
cat configコマンドでconfigの中身を確認し、正しく追加されたことを確認することができます。

4. GitHubを置く SSH仓库地址中的[email protected]替换成新建的Host别名 
置き換えに関するルール 
オリジナルプロジェクトのsshアドレスは 
$ [email protected]:A/Demo.git 
そうすると、置き換え先のアドレスは 
$ github-bcount:A/BestoneGitHub.git 
または 
$ git@github-bcount:A/Demo.git 
具体的に修正したコマンドライン

まず、$ git remote -v で Demo というアドレスのリモートリポジトリに接続しているかどうかを判断し、接続している場合はホスト名を

$ git remote-set-url origin github- bcount:A/Demo.git

その後、$ ssh -T github-bcountコマンドで変更が成功したかどうかを確認することができます。 
変更が成功した場合、再度 $ git remote -v コマンドを使用すると、以下のように表示されるはずです。

github github- bcount:A/Demo.git (fetch)
github github- bcount:A/Demo.git (push)

その後、もう一度コミットプロジェクトを行うなどすれば、問題ありません。 
それでもうまくいかない場合は、次のステップとして、sshAgentエージェントに鍵を追加してください。
まず、コマンドを実行します。

eval "$(ssh-agent -s)"

次に、キー id_rsa_bcount を追加します。

ssh-add id_rsa_bcount

次に、デフォルトのキーid_rsaを追加します。

$ ssh-add id_rsa

これで大丈夫なはずです。ssh -T [email protected]来看一下密钥isa是否连接成功github或者$ ssh -T git@github-bcount でキー id_rsa_bcount が github に正常に接続できるかどうかテストできます。

これが正しく動作すれば、うまくいくはずです。