gitの認証で詰まった困った.

github + VScode で毎日草を生やしてるだけでしたが,複数人でgitで共有しながら作業したり,Linix環境下でgitを使おうと思ったところ,認証で色々躓きました.

うろ覚えですが,個人用プロジェクトの開発に際して,VScodeでgitの初回認証をしていたんですが,自動でブラウザが立ち上がり認証してくれるため,特に躓いた記憶がありません.ちゃんと理解して使わないとだめですね.


さて,今回Linixの新しい環境で git clone をする際にユーザー名とパスワードを求められ,正しく入力するもエラーになるという状況でした.

$git clone https://github.com/user/repository.git
cloning into 'repository'
Username for 'https://github.com': user
Password for 'https://username@github.com': password ← パスワード認証は廃止のようです.
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead. ← トークンを使えばよいみたいですね.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.
fatal: unable to access 'https://github.com/username/

どうやら,gitでは2021年にパスワード認証が廃止されており,パーソナルアクセストークンを用いたHTTPS接続,もしくはsshを用いて認証するみたいです.ほうほう.

アクセストークンを用いたHTTPS接続

まずアクセストークンを用いたHTTPS接続です.

1.設定画面を開く.

2.Developer settings を開く.

3.Presonal access tokens → Token(classic) を選択し,Generate new token を開く

4. Noteを記入,Expirationを選択,Select scopesを選択.(repoでいいと思います.)

5.トークンをコピーする.(二度と見れないので慎重にしましょう.)

6.パスワードの代わりに取得したトークンを使用することで認証できる.

パーソナルアクセストークンを取得し,git clone をしてみましょう.

$ git clone https://github.com/user/repository.git
Cloning into 'repository'...
Username for 'https://github.com': user
Password for 'https://username@github.com': トークンを入力する

これでgit にHTTPS接続ができるようになります.

ssh接続(おすすめ)

SSH秘密鍵,公開鍵を生成しましょう.

$ ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):入力なしでエンター
Enter passphrase (empty for no passphrase):入力なしでエンター
Enter same passphrase again:入力なしでエンター

これでsshキーが生成できました.ホームディレクトリの.sshフォルダに作成されていると思います.

$ ls ~/.ssh
authorized_keys id_rsa id_rsa.pub

sshキーが生成出来たら,githubで設定しましょう.

1.設定画面を開く.

2.New SSH Key を開く

3.titleを入力,keyには id_rsa.pub の中身を記入する.

4.add SSH Key を押す.

それでは,git clone をしてみましょう.

$git clone git@github.com:user/repository.git
Cloning into 'repository'...
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? ← yes を入力

これでgit clone ができるようになったと思います.

ワシは練習がてらでsshキーを生成して認証しました.では.