📝はじめに
ローカル環境から自分の private リポジトリに git push
しようとしたところ、GitHub の Username と Password を求められました。
正しい情報を入力したにもかかわらず push ができず、原因を調べることに。
本記事では、
- 正しい GitHub の情報を入れても push できなかった原因
- 解決方法(Personal Access Token を使った認証)
- さらに便利な push/pull 方法(SSHキー認証の利用)
を備忘録としてまとめておきます。
✅ まず git push できなかった原因
Username / Password に正確な GitHub の情報を入力しても認証されなかったのは、GitHub が 2021 年以降、HTTPS通信でのパスワード認証を廃止したためでした。
そのため、何度正しいパスワードを入れても認証が通らず、git push
ができなかったということになります。
🔑 git push できるようにするには(HTTPS + PAT)
では、GitHubのパスワードが使えないなら何を入力すればよいのでしょうか。
答えは Personal Access Token (PAT) です。
GitHub は HTTPS 通信でのパスワード認証を廃止したため、現在は パスワードの代わりに PAT を入力する必要があります。
PATってなんですかって方は下記アクセストークンについて
という記事が参考になります。PATの発行の仕方がわからない方は、Personal Access Token発行手順
の記事が参考になります。
PAT 発行時の注意点
PAT を発行する際には、スコープ(権限)設定で必ず repo
にチェックを入れることを忘れないようにしてください。
これを指定しないと、private リポジトリに push できないままになってしまいます。
使い方
PAT を発行したら、それをコピーして git push
や git pull
の際に求められる Password 欄に貼り付けるだけです。
これで正常に認証され、push/pull が成功するようになります。
🔐SSH 接続でより快適に
HTTPS + PAT でも push/pull はできますが、毎回トークンを入力するのは正直面倒です。
そこでおすすめなのが SSH 接続です。公開鍵/秘密鍵を使う認証なので、一度設定すれば毎回の入力は不要になります。
※HTTPS通信でも毎回Password(PAT)を打たなくてもよくするための設定がありますが、この記事では取り上げません。
SSH接続の手順
1, SSH接続のセットアップ
まずはGitHubとSSH接続を完了させてください。
2, SSH接続が完了したらローカルで開発している環境内で下記コマンドをユーザー名とリポジトリ名を変更して入力してください。そうすることでそのローカル環境と指定したリモートリポジトリ間の通信方法を設定できます。今回はSSHでの通信をするよという設定をしています。SSHキーはGitHubリポジトリ内の<>Code
からもコピーできます。
git remote set-url origin git@github.com:ユーザー名/リポジトリ名.git
3, SSHで通信するというセットが完了したら、下記コマンドで現在のローカル環境とリモートリポジトリ間で設定されている通信方法を確認してください。
git remote -v
# origin git@github.com:ユーザー名/リポジトリ.git (fetch)
# origin git@github.com:ユーザー名/リポジトリ.git (push)
git remote -v
で https://... ではなく git@github.com... になっていれば SSH 接続に切り替わっています。
これでリモートリポジトリとのSSH接続が完了し、 git push
, git pull
するときに毎回 Password(PAT)が求められなくなります。
🎯 おわりに
SSH 接続に切り替えてから、毎回パスワードを入力しなくてよくなり作業効率が上がりました。
もしまだ HTTPS 通信で毎回パスワードやトークンを入力している人がいれば、ぜひこの機会に SSH 接続も試してみてください。
参考記事
https://qiita.com/suin/items/1ce9e11bd1c203fb1167
https://qiita.com/mokio/items/f6c67c8f9af050383fc0
https://qiita.com/shizuma/items/2b2f873a0034839e47ce
https://qiita.com/rorensu2236/items/df7d4c2cf621eeddd468
https://docs.github.com/ja/authentication/connecting-to-github-with-ssh