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: Let’s build from here GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, revie...

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 プログラミング学習に出遅れた社会人

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

目次