仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・SNS分析・仮想通貨・自動化などに関してよく書く雑記ブログ

Gitで「fatal: unable to access The requested URL returned error: 403」


GitにLocalのアプリケーションをプッシュしようとしたら「fatal: unable to access The requested URL returned error: 403」エラーが出て、解決に割と時間を取られてしまったので、解決方法メモしておきます。


Githubで「Create a new repository」でレポジトリを新規作成

「$ git push -u origin master」コマンドで、Localのアプリケーションをremoteにプッシュしようとする

remote: Permission to abc/abc.git denied to xxx.
fatal: unable to access 'https://github.com/xxx/abc/': The requested URL returned error: 403

と出力され、プッシュができない...。

という状況に陥りました。ここからプッシュするためにググりながら色々試します。


「$ git credential fill」でusernameとpassword確認

「$ git credential fill」で、gitにログインしているユーザー情報が正しいのかを確認してみると以下のようにusernameとpasswordを確認することができます。

username=xxx
password=yyy

ここで表示されるusernameが期待しているものではなかった(自分の利用している他のgithubアカウントのものだった)ため、「$ git credential reject」でキャッシュされているユーザー情報を消しにかかります。...が、反応がない。そもそもユーザー情報を消せない?


GithubでSSH keysの登録

そういえば、sshキーの設定をしてなかったなと気づき、sshキーの設定をgithub上で行いました。「$ cd ~/.ssh」で.sshディレクトリに移動し、ディレクトリ内のファイルを確認します。

$ ls
id_rsa                          known_hosts
id_rsa.pub                      known_hosts.old

id_rsaがすでに作成されていますが、これは他のgithubアカウントで利用しているものなので、今回の新しいgithubアカウントで利用するsshキーを新規に用意します。

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): {ここに新規で登録したいsshキーの名前を入力*1}
Enter passphrase (empty for no passphrase): {PCのパスワードを入力}
Enter same passphrase again: {PCのパスワードを再度入力}

で新規にsshキーが作成できます。ここで作成できた公開鍵の内容をGithubに登録します。MacOSの場合は、以下のコマンドで作成した公開鍵のファイル内の情報をクリップボードにコピーできます。

pbcopy < ~/.ssh/{新規に作成したsshキーの名前*1}.pub

f:id:virtual-surfer:20180411231231p:plain

Key欄にクリップボードにコピーしたファイル情報を貼り付け、登録します。


これでsshキーも登録できたし、gitのユーザー情報も変わってるかな?と期待して「$ ssh -T git@github.com」コマンドで確認すると

$ ssh -T git@github.com

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

まだ期待するユーザー名になっていません...。プッシュしようとしてもerrorに。

$ git push origin master

error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/abc/abc.git'


「~/.ssh/config」の設定

gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~

↑ こちらの記事を参考にして、新しいsshキーを作成した場合には「~/.ssh/config」の設定をする必要があることがわかりました。早速設定していきます。

$ vi ~/.ssh/config

# 今回該当しない方のsshキー
Host github github.com
 User git
 Port 22
 HostName github.com
 IdentityFile ~/.ssh/id_rsa

# 新しく作成したsshキー
Host github-git
 User git
 Port 22
 HostName github.com
 IdentityFile ~/.ssh/id_git_rsa

configファイルの設定ができたら、以下のコマンドでremoteのoriginのURLを確認します。

$ git config remote.origin.url

https://github.com/xxx/abc.git

以上のように、今回該当しない方のsshキーでのHostnameが適用されてしまっているので、この設定を「$ git remote set-url origin {Host名}:{ユーザーID}/{リポジトリ}.git」コマンドで書き換えます。(Host名はconfigファイルで設定したHost、ユーザーIDはgithubで登録しているユーザーID、リポジトリは新規作成したリポジトリ名をそれぞれ登録)

$ git remote set-url origin github-git:xxx/abc.git

これで、再度プッシュを試みます。

$ git push -u origin master

Counting objects: 341, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (333/333), done.
Writing objects: 100% (341/341), 40.36 KiB | 0 bytes/s, done.
Total 341 (delta 207), reused 0 (delta 0)
remote: Resolving deltas: 100% (207/207), done.
To github-git:/xxx/abc.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.


いけたー!

長い戦いでした(´・_・`)


Gitもう少し勉強しよう。


Gitに関しては、こちらの記事も参考にどうぞ。

www.virtual-surfer.com


www.virtual-surfer.com