解決したい問題
GitHubのリポジトリをgitコマンドまたはGUIクライアントツールで操作するとき、Git操作に慣れていない人がGiHubへの認証でつまづくことがある。
たとえば、HTTPSでのリポジトリのクローンでは、ユーザー名とPersonal Access Tokenを入力する。
しかしgitコマンドを実行するとパスワードの入力を求めるメッセージが表示される。
誤ってここでGitHubのパスワードを入力してしまうと、認証に失敗する。
またPersonal Access Tokenには有効期限があるため、有効期限が切れると再発行する必要がある。
そのため、筆者はSSHキーでの認証が楽だと感じているが、sshコマンドによる鍵の作成や公開鍵をGitHubに登録する手順があるため案内するには敷居が高い。
解決策
GitHub CLIを使うと、SSHキーの作成と登録がコマンド1つで完了する。
確認した環境
- GitHub CLI v2.40.1
手順
STEP1:GitHub CLI をインストールする
- 
GitHub CLIのWebサイトからインストーラーをダウンロードしてインストールするか、次のコマンドを実行してHome brew経由でインストールする。 brew install gh
- 
次のコマンドでインストールされていることを確認する。 gh --version gh version 2.40.1 (2023-12-13) https://github.com/cli/cli/releases/tag/v2.40.1
STEP2:GitHub CLI で認証する
- 
GitHub CLIで、認証のためのコマンドを実行する。 gh auth login
- 
GitHubのサーバーの種類を設定する。 
 今回はGitHub.comの操作をしたいので、「GitHub.com」を選択する。? What account do you want to log into? [Use arrows to move, type to filter] > GitHub.com GitHub Enterprise Server
- 
認証方法が設定する。 
 必ず「SSH」を選択する。? What is your preferred protocol for Git operations on this host? [Use arrows to move, type to filter] HTTPS > SSH
- 
SSHキーを作成してGitHub.comに登録するかを確認される。 
 「Y」を入力してEnterキーを押す。? Generate a new SSH key to add to your GitHub account? (Y/n)
- 
SSHキーのパスフレーズを設定する。 
 入力しても良いが今回はEnterキーを押してパスフレーズの設定をスキップする。? Enter a passphrase for your new SSH key (Optional)
- 
GitHub.comでSSHキーを管理するときに使う名前を入力する。 
 名前は何でも良いが、今回は「my-pc」と入力してEnterキーを押す。? Title for your SSH key: (GitHub CLI)
- 
鍵を登録するためGitHub.comへのアクセスを要求される。 
 アクセス方法には2つあるが、ブラウザーを使ったアクセスが楽なので、「Login with a web browser」を選択する。? How would you like to authenticate GitHub CLI? [Use arrows to move, type to filter] > Login with a web browser Paste an authentication token
- 
ターミナルに表示されたワンタイムコードをコピーし、Enterキーを押す。 
 Webブラウザーが起動されるがターミナルは閉じずに、以降の作業をWebブラウザー上で続ける。! First copy your one-time code: 59C1-3004 Press Enter to open github.com in your browser...
- 
GitHub.comのログイン情報を入力してログインする。 
- 
ワンタイムコードを入力する画面が表示されるので、ターミナルに表示されたワンタイムコードを入力し、[Continue]をクリックする。 
  
- 
GitHub CLIにアクセスを許可するかの確認画面が表示されるので、「Authorize GitHub」をクリックする。 
  
- 
認証を完了したことを示すメッセージが表示されたら、Webブラウザーを閉じる。 
  
- 
ターミナルに次のメッセージが表示されれば、SSHキーの作成と登録が完了している。 ✓ Authentication complete. gh config set -h github.com git_protocol ssh ✓ Configured git protocol ✓ Uploaded the SSH key to your GitHub account: /Users/chick-p/.ssh/id_ed25519.pub ✓ Logged in as chick-p
STEP3:SSH キーの作成と登録が完了したことを確認する
- 
GitHub.comを開き、右上のユーザーアイコンをクリックする。 
- 
[Settings]>[SSH and GPG keys]の順で開く。 
- 
「SSH keys」の一覧に、先ほど作成したSSHキーが表示されていることを確認する。 
  
ローカルでは、SSHキーのペアが~/.ssh以下に作成されていることを確認できる。
ls ~/.ssh
id_ed25519  id_ed25519.pub
STEP4:動作確認
Gitコマンドでプライベートリポジトリをクローンし、問題なく認証できることを確認する。
- 
リポジトリの[Code]をクリックし、「SSH」タブの「git@github.com:〜」から始まるURLをコピーする 
- 
次のコマンドを実行する使ってクローンする。 <URL>は先ほどコピーしたURLを指定する。git clone <URL> # git clone git@github.com:chick-p/private-repository.git Cloning into 'private-repository'...
- 
初回は未知の接続先ホストに対する確認メッセージが表示されるので、「Yes」を入力する。 git clone git@github.com:chick-p/private-repository.git ... The authenticity of host 'github.com (20.27.177.113)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?Info本来はフィンガープリントがSSH key fingerprintsに掲載されているものと一致することを確認する必要がある。 
- 
リポジトリがクローンされたことを確認できればOK。