GitHub CLIを使ってGitHub.comに接続するSSHキーを作成する
解決したい問題
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。