LoginSignup
0
0

More than 1 year has passed since last update.

git pushで403エラーが解決できなかったのでSSH接続を試した

Posted at

この記事について

git pushしようとしたら、下のような403エラーが出ました。

remote: Permission to <アカウント名>/<リポジトリ名>.git denied to <アカウント名>.
fatal: unable to access 'https://github.com/<アカウント名>/<リポジトリ名>.git/': The requested URL returned error: 403
  • windows資格情報を削除する
  • git configでユーザ情報を変更する
  • リモートリポジトリのURLをhttps://@github.com/<アカウント名>/<リポジトリ名>.gitにする

など試してみましたが解決できませんでした。
2つgithubアカウント(学校用と私用)があり、これの切り替えが原因であろうと思うのですが、そこから先は分かりません。
そこで方針を変えてSSHでの接続を試みることにしました。
その際の備忘録です。

筆者環境

Ubuntu on windows(Ubuntuのバージョンは20.04)

やったこと

手順1 鍵生成

下のコマンドでSSH鍵を生成します。

cd ~/.ssh
ssh-keygen -t rsa -C "<githubアカウントのメールアドレス>" -f "<鍵のファイル名:任意>"

passphraseを何にするか聞かれます。無くてもエラーにはなりません。
SSH接続のパスワードのようなものだと思います。
ssh-keygenのオプションについて補足しておきます。

オプション 説明
-t 暗号化方式
-C コメント
公開鍵の末尾に書き込まれます。
-f 鍵のファイル名

そうすると~/.ssh下に<鍵のファイル名><鍵のファイル名>.pubという2つのファイルが出来ます。前者は秘密鍵、後者は公開鍵が書き込まれています。

手順2 ssh鍵をgithubに登録する

公開鍵(<鍵のファイル名>.pubの中身)をクリップボードにコピーします。
方法は何でもいいですが、例えば下記のコマンドなどでコピーできます。

cat <鍵のファイル名>.pub | clip.exe

そうしたらブラウザでgithubを開き、settings > SSH and GPG keys > New SSH Keyの順でクリックしてSSH鍵追加画面を開きます。
各項目を入力します。
Titleは任意のものを、Key typeはAuthentication Keyを選択します。
Keyにはクリップボードにコピーしている公開鍵を貼り付けます。
そうしたらAdd SSH keyボタンを押して登録を完了します。

手順3 ~/.ssh/configを設定する

~/.ssh/configは秘密鍵はどのファイルにあるか、ホストは何かなどの設定を書きこむファイルです。
下を追加します。

Host <接続名:任意>
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/<鍵のファイル名>
  TCPKeepAlive yes
  IdentitiesOnly yes

gitが、~/.ssh/<鍵のファイル名>の中身を秘密鍵として用いて、22番ポートで、github.comに接続するという意味です。

手順4 gitのconfigをいじる

下のコマンドでリモートリポジトリのURLを設定します。

git remote set-url origin git@<接続名>:<アカウント名>/<リポジトリ名>.git

手順4 接続する

下のコマンドでSSH接続します。

ssh -T <接続名>

結果

Hi <githubのアカウント名>! You've successfully authenticated, but GitHub does not provide shell access.

完了

これでgit push出来るようになりました。

参考

403エラー関連
windows資格情報削除で解決した方
git pushで自分のレポジトリへのアクセスが403で拒否される対処法 Remote: Permission to user1/repo denied to user2
urlを書き換えで解決した方
git pushで403のエラーが返ってくる問題
SSH関連
【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する
【2021年以降】コマンドラインからgithubにpush/pullすると接続エラーになる
【GitHub】複数GitHubアカウントのSSHキーを管理する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0