Gitのキホン – 公開鍵認証の設定

目次

概要

リモートリポジトリとなるGitHubと、Macのssh接続を『公開鍵認証』にします。
設定するかどうかは任意ですが、この設定は最初に行っておく方セキュアです。

公開鍵認証とは

詳細は割愛しますが、『公開鍵』と『秘密鍵』という対になる鍵を生成し、サーバ側に公開鍵を設置します。
そして、対となる秘密鍵を持つ端末からのみ、接続を受け付けるようにする仕組みです。

鍵の生成はMacで実施できます。

GitHub側に公開鍵を設置し、対となる秘密鍵のあるMacからのみ接続が可能になります。
当然、秘密鍵は誰にも見られないよう管理してください。

環境

モデルMacBook Air (Retina, 13-inch, 2018)
プロセッサ1.6 GHz デュアルコアIntel Core i5
グラフィックスIntel UHD Graphics 617 1536 MB
メモリ8 GB 2133 MHz LPDDR3
MacOSVentura 13.3.1

手順

公開鍵・秘密鍵の生成

下記のコマンドを実行して鍵を生成します。
『-C』の後のメールアドレスは、GitHubに登録したメールアドレスにします。

  1. ”Enter file in which to save the key”は空欄でEnter
  2. ”Enter passphrase (empty for no passphrase): ”には任意のパスフレーズを入力
  3. “Enter same passphrase again: “にはパスフレーズを再入力
~ % ssh-keygen -t ed25519 -C "hogehoge@hoge.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/siba/.ssh/id_ed25519): 
Created directory '/Users/siba/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/siba/.ssh/id_ed25519
Your public key has been saved in /Users/siba/.ssh/id_ed25519.pub
The key fingerprint is:

〜 省略

キーが生成されたことを確認

ホームディレクトリの配下に2つのファイルが作成され、この中にキーが記載されています。
『.pub』というのが公開鍵で、『.pub』がないのが秘密鍵です。

~ % ls .ssh
id_ed25519      id_ed25519.pub

GitHubの設定

GitHubにログイン

下記のリンクからGitHubにログインします。

GitHub
GitHub · Build and ship software on a single, collaborative platform Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build softwa...

Settingをクリック

SSH and GPG Keys をクリック

New SSH Key をクリック

Title と Key の入力する

Title には任意の名前を入力して、Keyには公開鍵の内容をコピペして下さい。
Key Typeはそのままで問題ありません。

公開鍵をコピーするコマンドは以下のとおりです。

~ % pbcopy < ~/.ssh/id_ed25519.pub

SSH keys が下記のような表示になれば、GitHub側のキーの設定は完了です。

SSH接続確認

生成したキーでアクセスできるのか確認します。

  1. 下記のコマンドを実行します
  2. 『Are you sure you want to continue connecting (yes/no/[fingerprint])?』は『yes』を入力してEnter
  3. 『Enter passphrase for key ‘/Users/siba/.ssh/id_ed25519’:』はキーを生成したときのパスフレーズを入力
  4. 『You’ve successfully authenticated』と表示されればOK
~ % ssh -T git@github.com                          
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:+********************/*********************. ←伏せ字
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.
Enter passphrase for key '/Users/siba/.ssh/id_ed25519': 
Hi dsiba4848! You've successfully authenticated, but GitHub does not provide shell access.

ssh-agentの設定

ssh-agentはssh接続するときに、毎回パスフレーズを入力する手間を省いてくれます。
もし都度入力するのが手間でなければ、この操作は不要です。

まずssh-agentを起動します。

~ % eval "$(ssh-agent -s)"
Agent pid 5957

秘密鍵をssh-agentに追加します。
もし秘密鍵のファイル名を変更している場合は『id_ed25519』の部分を修正してください。

~ % ssh-add ~/.ssh/id_ed25519
Enter passphrase for /Users/siba/.ssh/id_ed25519: 
Identity added: /Users/siba/.ssh/id_ed25519 (hogehoge@hoge.com)

改めてGitHubへの接続確認を行うと、パスフレーズを求められなくなったことが確認できます。

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

ssh-agentを使わないときは、『ssh-agent -k』コマンドで終了します。

~ % eval "$(ssh-agent -s)"
Agent pid 1553
~ % ssh-agent -k          
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 1553 killed;

おしまい

この設定を行うことで、この後に出てくるリモートリポジトリとのやり取りがスムーズになります。

参考

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

sibaのアバター siba プログラミング学習に出遅れた社会人

プログラミング学習に出遅れた社会人。

目次