MacBook Pro から GitHub へのアクセスを SSH 経由となるよう設定する
前回は、Docker コンテナ上にパブリックベータ公開された Nuxt.js v3 のテンプレートアプリを構築してみました。
今回は、開発マシン(MacBook Pro)から、ソースコードなどを保管する GitHub リポジトリへ SSH 経由で接続するように設定します。
GitHub へ SSH(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/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.