DEVなメモ

個人開発のメモ的なブログ

MacBook Pro から GitHub へのアクセスを SSH 経由となるよう設定する

前回は、Docker コンテナ上にパブリックベータ公開された Nuxt.js v3 のテンプレートアプリを構築してみました。

devnamemo.hatenablog.com

今回は、開発マシン(MacBook Pro)から、ソースコードなどを保管する GitHub リポジトリSSH 経由で接続するように設定します。

GitHubSSH(Secure Shell:セキュアシェル)で通信経路を暗号化して接続するには、開発マシンで暗号化認証用の公開鍵と秘密鍵を作成し公開鍵を GitHub へ登録する必要があります。

開発マシンで公開鍵と秘密鍵を作成する

開発マシンである MacBook Pro 上で公開鍵と秘密鍵を作成します。 SSH 関連の設定や鍵は、~/.ssh ディレクトリに配置するのがお決まりなので、ここが作業ディレクトリとなります。

cd ~/.ssh

ssh-keygen コマンドで鍵を作成します。 複数のアカウントで SSH 接続する場合に備えて、コメントにアカウントID(ここではメールアドレス)を入れておくと後で見分けやすいです。 鍵のファイル名にもアカウントを識別できるようにしておくと、更に分かりやすいです。

ssh-keygen -t rsa -b 4096 -C "xxxxxx@example.com" -f ~/.ssh/id_rsa_xxxxxx_example
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxxxxx/.ssh/id_rsa_xxxxxx_example
Your public key has been saved in /Users/xxxxxx/.ssh/id_rsa_xxxxxx_example.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxXXX/XXXxxx xxxxxx@example.com
The key's randomart image is:
+---[RSA 4096]----+
|       .xxxxxxxxxx
|       . yyyyyyyyy
|        =zzzzzzzzzz
|       . X.  o . Z
|        X = . Y  |
|       Y = + = + |
|      . . o . o  |
|       .     o   |
|            .o+. |
+----[SHA256]-----+

作成された秘密鍵パーミッションを変更しておく。

chmod 600 id_rsa_xxxxxx_example

GitHub に登録する公開鍵をクリップボードにコピーします。

pbcopy < id_rsa_xxxxxx_example.pub

Add public key to GitHub

ここからは、GitHub サイト上での作業です。 ホーム画面から、Settings -> SSH and GPG keys -> New SSH Key と遷移して SSH 公開鍵を登録します。

SSH公開鍵を新規追加
SSH公開鍵を新規追加

SSH公開鍵を追加
SSH公開鍵を登録

登録完了
登録完了

SSH 接続設定

再び開発マシンで SSH 接続設定を行います。 SSH 接続設定は、~/.ssh/config ファイルに記載します。

vi config

github.com への接続設定を追加します。

Host github github.com
    User git
    Port 22
    HostName github.com
    identityFile ~/.ssh/id_rsa_xxxxxx_example
    TCPKeepAlive yes
    IdentitiesOnly yes

ssh-add コマンドで MacBook Pro秘密鍵を登録しておきます。

ssh-add ~/.ssh/id_rsa_xxxxxx_example
Identity added: /Users/xxxxxx/.ssh/id_rsa_xxxxxx_example (xxxxxx@example.com)

SSH で接続できるかテストします。 初回接続時は known hosts に登録されていないので、登録するかが確認されます。

ssh -T git@github.com
The authenticity of host 'github.com (52.69.186.44)' can't be established.
ED25519 key fingerprint is SHA256:+xxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXXXXXX.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.

正常に接続されていれば、最終行のように GitHub アカウントとして認証されたことが表示されます。

2回目以降は known hosts への登録確認がなく、認証されたことだけが表示されます。

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

適当なリポジトリをクローンしてみましょう。

cd ~/tmp
git clone git@github.com:xxxxxx/portfolio.git
Cloning into 'portfolio'...
remote: Enumerating objects: 253, done.
remote: Counting objects: 100% (253/253), done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 253 (delta 120), reused 153 (delta 52), pack-reused 0
Receiving objects: 100% (253/253), 3.15 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (120/120), done.

問題なく SSH 接続してリポジトリがクローンされました!