MacからGitHubにsshで接続する手順

目次

ずっとUbuntuでGitHubを操作していたのですが、iMacからも操作できるように設定しました。メモとして残しています。

環境は"macOS Big Sur 11.6"です。

公式ページの方法で進めます。

「GitHubアカウントへの新しいSSHキーの追加」

Gitをインストール

すでにGitはインストールされていましたが古いのでバージョンアップします。

$ git --version
git version 2.30.1 (Apple Git-130)

Git公式ページにあるようにHomebrewでインストールすることにしました。

「Git - Download for macOS」

まずHomebrewを公式ページにしたがってインストールします。

「https://brew.sh/」

ターミナルを開いて公式にあるコマンドを実行します。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password).
Password: [ここでパスワードを入力します]
・・・略・・・
==> Installation successful!
・・・略・・・

インストールが成功したようなので、バージョンを確認します。

$ brew --version
Homebrew 3.2.16
Homebrew/homebrew-core (git revision 0132f3f7f21; last commit 2021-10-16)

Git公式にあるようにHomebrewコマンドでGitをインストールします。

$ brew install git

Gitのバージョンを確認してみると、以前のままです。

$ git --version
git version 2.30.1 (Apple Git-130)

パスは設定されているようだったので再起動したら反映されたらしく、正しく実行されるようになりました。

# パッケージのバージョンを確認すると最新の'2.33.1'
$ brew info git
git: stable 2.33.1 (bottled), HEAD
Distributed revision control system
https://git-scm.com
/usr/local/Cellar/git/2.33.1 (1,513 files, 42.1MB) *
  Poured from bottle on 2021-10-16 at 22:27:12
・・・略・・・
# Gitのインストール先は'/usr/local/Cellar/git/2.33.1/bin/git'
$ brew ls git
/usr/local/Cellar/git/2.33.1/.bottle/etc/gitconfig
/usr/local/Cellar/git/2.33.1/bin/git
/usr/local/Cellar/git/2.33.1/bin/git-cvsserver
/usr/local/Cellar/git/2.33.1/bin/git-receive-pack
/usr/local/Cellar/git/2.33.1/bin/git-shell
/usr/local/Cellar/git/2.33.1/bin/git-upload-archive
/usr/local/Cellar/git/2.33.1/bin/git-upload-pack
・・・略・・・
# brewでインストールしたGitは'/usr/local/bin'からシンボリックリンクで参照されている
$ ls -al /usr/local/bin | grep git
lrwxr-xr-x   1 username  admin    28 10 16 22:27 git -> ../Cellar/git/2.33.1/bin/git
lrwxr-xr-x   1 username  admin    38 10 16 22:27 git-cvsserver -> ../Cellar/git/2.33.1/bin/git-cvsserver
lrwxr-xr-x   1 username  admin    41 10 16 22:27 git-receive-pack -> ../Cellar/git/2.33.1/bin/git-receive-pack
lrwxr-xr-x   1 username  admin    34 10 16 22:27 git-shell -> ../Cellar/git/2.33.1/bin/git-shell
lrwxr-xr-x   1 username  admin    43 10 16 22:27 git-upload-archive -> ../Cellar/git/2.33.1/bin/git-upload-archive
lrwxr-xr-x   1 username  admin    40 10 16 22:27 git-upload-pack -> ../Cellar/git/2.33.1/bin/git-upload-pack
# パスで'/usr/local/bin'が定義されている
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin

再起動して再びバージョン確認しました。

$ git --version
git version 2.33.1
# 場所の確認
$ which git
/usr/local/bin/git

Gitにユーザ名とメールアドレスを設定していない場合は、設定しておきます。

$ git config --global user.name "hn-carter-mac"
$ git config --global user.email "01234567+hn-carter@users.noreply.github.com"

GUIツールもインストールします。

$ brew install git-gui

GitHub CLIをインストール

“GitHub CLI"はターミナルからGitHubを操作するツールです。Homebrewでインストールする事ができます。

$ brew install gh

インストールされたバージョンを確認します。

$ gh --version
gh version 2.1.0 (2021-10-14)
https://github.com/cli/cli/releases/tag/v2.1.0

SSH鍵の作成

素直に公式ページを参考に操作しました。

「新しいSSHキーを生成してssh-agentに追加する」

まず、GitHubに接続するためのSSH鍵を作成します。

$ ssh-keygen -t ed25519 -C "01234567+hn-carter@users.noreply.github.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519): 
Created directory '/Users/username/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/username/.ssh/id_ed25519.
Your public key has been saved in /Users/username/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:x3AXeWxJBxUxFxnxvXDxnx1XiX4x7xsXVXlXixfXEX4 01234567+hn-carter@users.noreply.github.com
The key's randomart image is:
+--[ED25519 256]--+
|        .o+==....|
|      . =..++= o |
|        o.*o= *  |
|     B . = + = = |
|        S = o B  |
|       . + B o B |
|        o . + +  |
|       = .B=+. o |
|         .=oE   .|
+----[SHA256]-----+

# 作成したSSH鍵ファイル 
$ ls -al ~/.ssh
total 16
drwx------   4 username  staff  128 10 17 23:40 .
drwxr-xr-x+ 22 username  staff  704 10 17 23:40 ..
-rw-------   1 username  staff  484 10 17 23:40 id_ed25519      <= 秘密鍵ファイル
-rw-r--r--   1 username  staff  125 10 17 23:40 id_ed25519.pub  <= 公開鍵ファイル

次に、作成したSSH鍵をssh-agentに登録します。

# ssh-agentをバックグラウンド起動
$ eval "$(ssh-agent -s)"
Agent pid 844

パスフレーズを登録する設定をconfigファイルに書き込みます。

# touchコマンドでファイルを新規作成し
$ touch ~/.ssh/config
# Macのopenコマンドでファイルを開きます
$ open ~/.ssh/config

エディタが表示されるので以下の内容を入力します。

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
# SSH秘密鍵をssh-agentに追加します
$ ssh-add -K ~/.ssh/id_ed25519
Enter passphrase for /Users/username/.ssh/id_ed25519: [パスフレーズを入力]
Identity added: /Users/username/.ssh/id_ed25519 (01234567+hn-carter@users.noreply.github.com)
# 追加されているSSH鍵を確認できます
$ ssh-add -l
256 SHA256:X3AXeWxJBxUrXwxmxMXoxbXWxRXpXr7OXN8Vxrx7EX4 01234567+hn-carter@users.noreply.github.com (ED25519)

SSH鍵をGitHubに登録

GitHub CLIで接続設定を行います。gh auth loginコマンドを実行するといくつか質問されますが以下のように解答しました。

$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations? SSH
? Upload your SSH public key to your GitHub account? /Users/username/.ssh/id_ed25519.pub
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: ABCD-1234 <= ワンタイムコードが表示される
- Press Enter to open github.com in your browser... 

ここでEnterキーを押すとwebブラウザが開きます。

ユーザ名とパスワードを入力します。

GitHubにログイン

GitHubにログイン

この画面でターミナルに表示されたワンタイムコードを入力します。

ワンタイムコード入力

ワンタイムコード入力

権限の確認画面が表示されたら’Authorize github’ボタンをクリックします。

権限の確認

権限の確認

設定完了画面が表示されます。

設定完了

設定完了

ここでターミナルに戻り、エンターキーを押すとGitHubにログインされます。

✓ Authentication complete. Press Enter to continue...

- gh config set -h github.com git_protocol ssh
✓ Configured git protocol
✓ Uploaded the SSH key to your GitHub account: /Users/username/.ssh/id_ed25519.pub
✓ Logged in as hn-carter

GitHubの認証状況を確認するとログインできていることが分かります。

$ gh auth status
github.com
  ✓ Logged in to github.com as hn-carter (/Users/username/.config/gh/hosts.yml)
  ✓ Git operations for github.com configured to use ssh protocol.
  ✓ Token: *******************

GitHubに登録されている鍵の一覧を表示してみます。‘Ubuntu-VM’は以前に登録済みの鍵で、‘GitHub CLI’が今回追加したカギになります。 鍵のタイトルがいつの間にか’GitHub CLI’になってるのでGitHubのwebサイトから鍵の追加をした方が良かった?

$ gh ssh-key list
Ubuntu-VM   ssh-ed25519 ADBAC3XzxC5lIDX1CTE5BAAEIB1D8S08NUj8j9w8vxy78wx4IR281Zj9A587w+wrN=G5  May 28, 2021
GitHub CLI  ssh-ed25519 ABADC3XzxC9lZXI1NTX5ADAAGEFskGTcLHX3BS/zuTDduOXfkmGy8029tjrH56uyv+Sk  6m

GitHubへSSH接続できるか確認します。

$ ssh -T git@github.com
Hi hn-carter! You've successfully authenticated, but GitHub does not provide shell access.

以上で完了です。