github

GitHubでhttpsのパスワード認証が廃止

GitHubでリポジトリを作成して、pushしようとしたら突然エラーが発生しました。
今までは普通にできていたので、調べたら2021年8月13日にパスワード認証が廃止されていました。

そういえば、githubのブログの方でも大分前からアナウンスしていたのをすっかり忘れてた。

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

結構多発しているようなので、ここで紹介しておきます。

$ git push origin master
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access 'https://github.com/名前/リポジトリ.git/': The requested URL returned error: 403

このエラー内容は共通で、Support for password authentication was removedと書かれている通りパスワード認証が廃止されていることを通知しており、Please use a personal access token instead.
という風にアクセストークンを使ってくれと教えてくれています。

ここでは、アクセストークンを使うやり方とSSHを使う方法の2通り解説します。

個人アクセストークンを使う方法

公式ドキュメントを見ればわかるのですが、必要な箇所だけ抜粋します。

https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

  1. 設定画面を開く(https://github.com/settings/tokens
  2. Generate new tokenを選択
  3. Noteに任意の文字列を指定
  4. 期限を設定(期限を過ぎると再度設定しなおし)
  5. 権限を設定(基本的に全部チェックで問題なし)
  6. Generate tokenをクリック
  7. トークンをコピー(ページを離れると参照できなくなるので要注意)

このトークンをパスワードの代わりに用いれば大丈夫です。

ただ、このやり方はオススメしていません。

これを機にSSHの方法になれた方が便利です。

SSHによる接続

公開鍵・秘密鍵を作成する必要があります。

鍵を置くフォルダに移動します。

$ cd ~/.ssh

# .sshフォルダがなければ作成する
# 作成方法
$ mkdir ~/.ssh

移動が完了したら、鍵を作成していきます。

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

他にも引数をつけたりするケースもありますが、今回は一番シンプルな形にしました。

Enter passphrase (empty for no passphrase):と聞かれますが、慣れていない方は何も入力せずにEnterで大丈夫です。

既にid_rsaがある方は上書きする形になってしまうので注意が必要です。

別の名前で作成するには、Enter file in which to save the key (/Users/xxxxxxxx/.ssh/id_rsa):と聞かれた後に任意の名前を指定していします。

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxxxx/.ssh/id_rsa): ssh_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

無事完了すると、id_rsaとid_rsa.pubが生成されます。

GitHubに公開鍵を登録する

https://github.com/settings/ssh

にアクセスして公開鍵の設定をします。

右上にあるNew SSH keyをクリックして、情報を記載していきます。

Titleには公開鍵名である、生成した鍵のファイル名をKeyにはid_rsa.pubの中身をコピペする必要があります。

クリップボードへのコピー方法は下記コマンドでできます。

# Mac版
$ pbcopy < ~/.ssh/id_rsa.pub

# Windows版
$ clip < ~/.ssh/id_rsa.pub

上手くいかない場合には、catコマンドでCLI上に表示させてコピーしてください。

$ cat ~/.ssh/id_rsa.pub

ここまでできたら、接続確認をします。

$ ssh -T git@github.com

Hi (account名)! You’ve successfully authenticated, but GitHub does not provide shell access.

と返ってきたら成功です。

デフォルト名ではなく、別の名前に変更した場合にはうまく行かない可能性があります。

そこで、~/.ssh/configファイルを作成し設定を書き込みます。

Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa #ここに自分の鍵のファイル名
  User git

#ここに自分の鍵のファイル名は削除してください。でないとエラーになります。

これで再度接続確認をしてみます。

$ ssh -T github

問題なければ、最後にgithubとやり取りするための設定をします。

git管理しているファイルを、git remote -vで確認し、

https://github.com/[ユーザID]/[リポジトリ]

のようになっていたら下記コマンドでsshの形に変更する。

$ git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git
or
$ git remote set-url origin [Host名]:[ユーザID]/[リポジトリ].git

[Host名]は~/.ssh/configの一行目に書いているHostのことです。今回はgithubです。

以上で完了です。

もう少し簡単に設定する方法として、~/.gitconfigに設定する方法があります。

[url "github:"]
    InsteadOf = https://github.com/
    InsteadOf = git@github.com: