SSHキーの作成とGitHubへの登録方法をわかりやすく解説

SSH × GitHub GitHub

リポジトリをクローンしたり、プッシュやプルなどの操作を行う際には、認証が必要です。GitHubでは、HTTPSとSSHの2種類の認証方法が提供されていますが、SSHを使用するとパスワード入力なしで安全に接続できます。

この記事では、SSHキーを作成し、それをGitHubに登録する方法について詳しく解説します。

SSHとは

SSH(Secure Shell)は、ネットワーク上の通信を暗号化し、安全にリモートコンピュータと接続するためのプロトコルです。GitHubではHTTPS接続の代わりにSSHを使用することで、パスワードなしでセキュアにリポジトリへアクセスできます。

SSHの仕組みについて

SSHは公開鍵暗号方式を使用して安全な通信を実現します。これには「秘密鍵」と「公開鍵」の2つの鍵が関与します。

  • 秘密鍵(Private Key): ローカルのコンピュータに保存され、他人には絶対に共有しない。
  • 公開鍵(Public Key): GitHubなどのサーバーに登録し、SSH接続の認証に使用される。

SSH接続時に、クライアント(自分のPC)が秘密鍵を使用してサーバー(GitHub)に対して認証を行い、サーバーは登録された公開鍵と照合して接続を許可します

SSHキーを作成する

以下のコマンドを実行して公開鍵と秘密鍵を作成します。

ssh-keygen -t rsa -b 4096

オプションについて

-t rsa(RSAアルゴリズム)
  • SSHキーの作成には、いくつかのアルゴリズム(RSA, ECDSA, Ed25519など)が利用できる
  • RSA(Rivest-Shamir-Adleman)は広く使用されている標準的な暗号アルゴリズムで、互換性が高い
  • デフォルトでRSAが選択される
-b 4096(鍵長を4096ビットに設定)
  • 鍵長(ビット数)が長いほどセキュリティが強化される
  • デフォルトの鍵長は2048ビットですが、4096ビットにすることで耐量子暗号的な安全性が高まる
  • デフォルトで2048ビットが適用される

オプションは付けなくても実行できますが、より強力なセキュリティを確保するために、-t rsa -b 4096 を明示的に指定することがおすすめです。

ssh-keygenコマンドを実行する

鍵の保存先を指定する

Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):

  • デフォルト(~/.ssh/id_rsa)で問題ないならそのままEnter
  • 別の名前(例: ~/.ssh/github_key)にしたい場合は、フルパスを入力する

パスフレーズを設定する

Enter passphrase (empty for no passphrase):

  • セキュリティ強化のため、パスフレーズを設定すると良い
  • 何も入力せずEnterを押すと、パスフレーズなしの鍵が作成される

パスフレーズを再入力する

Enter same passphrase again:

  • 先ほど入力したパスフレーズを再入力する
  • ここで入力ミスをすると、最初からやり直しになるので気をつけましょう

鍵の作成完了

  • 生成が完了すると、以下の2つのファイルが作成される
    • 秘密鍵: ~/.ssh/id_rsa(絶対に他人に渡さない!)
    • 公開鍵: ~/.ssh/id_rsa.pub(サーバーやGitHubに登録する)

以下のメッセージが表示されれば成功です。

Your identification has been saved in /Users/user_name/.ssh/id_rsa
Your public key has been saved in /Users/user_name/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .local
The key's randomart image is:
+---[RSA 4096]----+
|  .+.==+.+  .o   |
| .. +.+.+oo +.   |
| E..o..o.ooo..   |
|  o+. +=ooo  .o .|
|  . .+*.So. . .o.|
|   o . o o.. . . |
|    o     o . .  |
|           o .   |
|            .    |
+----[SHA256]-----+

GitHubに公開鍵を登録する

GitHubへアクセスします。

  1. 右上のアイコンから Setting → SSH and GPG keys へ移動する
  2. New SSH keys をクリック
  3. タイトル(例 MacBook-Pro SSH)を入力し、公開鍵(~/.ssh/id_rsa.pub)の内容をペースト
  4. Add SSH key をクリックして登録完了
GitHubに公開鍵を登録する

GitHubとの接続を確認する

次のコマンドで接続を確認します。

ssh -T git@github.com

以下のメッセージが表示されればSSH接続が完了しています。

Hi your-github-username! You’ve successfully authenticated, but GitHub does not provide shell access.

ssh -T git@github.comコマンドを実行してGitHubと接続できているか確認する

まとめ

SSHは安全なリモート接続を提供するプロトコルであり、GitHubとの認証にも利用できます。

SSHキーの作成は、ssh-keygen コマンドを使用し、作成された公開鍵をGitHubに登録することで完了します。登録した後は、ssh -T git@github.com を実行して接続を確認し、正常に認証できれば準備はOKです。これで、GitHubリポジトリとのSSH接続ができるようになりました。