
はじめに
Gitでの作業をもっとスムーズに、そして安全にする方法のひとつが「SSHキーの利用」です。SSH接続は、インターネットを通じてGitHubとやり取りする際に、強力な暗号化で通信を保護し、第三者による盗聴やなりすましを防ぎます。
この記事では、SSHキーの作成からGitHubへの登録、接続テスト、パスフレーズの管理方法(SSHエージェント活用)までを、初心者の方でも迷わず実践できるよう順を追って解説します。実行コマンドや表示例もあわせて紹介し、操作の流れがイメージしやすいようにしています。
この記事を読み終わる頃には、GitでのSSH接続の仕組みを理解し、自信をもってGitHubと安全にやり取りできるようになっているはずです。まずは基本から一緒に始めてみましょう。
Gitについての基本
Gitは、ファイルの変更履歴を管理するバージョン管理ツールです。個人の作業でもチーム開発でも、「誰が・いつ・何を」変更したのかを記録でき、安心して作業が進められます。
Gitの基本をさらに知りたい方は、以下の記事も参考にしてください。
▼Gitを基礎から学びたい方はこちら
【初心者向け】GitHubとは?必須知識と使い方について解説!
https://envader.plus/article/68
▼Gitコマンド早見表はこちら
必見!現場で役立つGitコマンド29選をまとめて紹介!
https://envader.plus/article/402
▼Windowsをお使いの方
本記事ではGit Bashを使用したコマンド例で紹介します。Git Bashについては以下の記事をご覧ください。
Git Bashを簡単導入!WindowsにLinuxライクな環境の構築方法
https://envader.plus/article/537
SSHキーとは?仕組みと役割
SSHキーとは、サーバーとの通信時に本人確認を行うための電子的な鍵のことです。
GitでGitHubなどのリモートリポジトリと安全に通信するために使用され、git push
や git pull
などの操作時の通信内容を暗号化して安全に保護します。
SSHキーは「公開鍵」と「秘密鍵」のペアで構成されます。公開鍵をGitHubに登録し、秘密鍵を自分のPCに保管することで、安全に認証が行われる仕組みです。
HTTPSとSSHの認証方式の違い
Gitでは、HTTPS接続とSSH接続という2種類の認証方式が利用できます。
それぞれの特徴は以下の通りです。
-
HTTPS接続
ユーザー名とパスワード(またはトークン)で認証。簡単に始められますが、
git push
やgit pull
操作の際に、環境によってはパスワード入力を求められるケースがあります。 -
SSH接続
設定後はSSHキーを使って認証を自動化し、Git操作の効率化が図れます。
作業効率や安全性を考えると、SSH接続のほうが長期的にはメリットが大きくなります。
SSH接続のメリット
SSH接続の最大の利点は、安全性の高さです。
通信内容は暗号化され、パスワード方式よりも盗聴や不正アクセスのリスクが低くなります。また、秘密鍵は自分のPC内にのみ保存され、外部に送信されることはありません。
補足:HTTPS接続も暗号化はされていますが、パスワードを直接使った認証では流出リスクが残ります。SSHは鍵認証を採用することで、このリスクをさらに減らすことができます。
▼公開鍵暗号方式については以下の記事で詳しく解説しています。
OpenSSLとは?公開鍵、証明書、SSL/TLSの仕組みからわかりやすく解説!
https://envader.plus/article/540
SSHキーの作成方法
SSHキーの基本を押さえたところで、実際に「公開鍵」と「秘密鍵」を ssh-keygen
コマンドで作成してみましょう。
ここでは、Windows(Git Bash)とMac(ターミナル)で共通の手順を説明します。違いは表示されるパスのみです。
-
ターミナルを開く
- Windows:スタートメニューから Git Bash を起動
- Mac:アプリケーション → ユーティリティ → ターミナル を起動
-
SSHキー作成コマンドを実行
以下のコマンドの
sample-sample@sample.com
部分をGitHubアカウントのメールアドレスに置き換え実行します。ssh-keygen -t ed25519 -C "sample-sample@sample.com"
-t ed25519
:鍵の種類(Ed25519方式)C
:鍵のラベル(メールアドレスなど)を指定
これにより、提供された電子メールをラベルとして使用して、新しい SSH キーが作成されます。
実行すると以下のようなメッセージが表示されます。
Generating public/private ed25519 key pair.
-
鍵の保存場所を指定
次に「鍵を保存するファイルを入力してください」と表示されます。特別な理由がなければ Enterキー(MacはReturnキー) を押して、デフォルトの保存場所を使います。
Windowsの表示例:
Enter file in which to save the key (/c/Users/username/.ssh/id_ed25519):
Macの表示例:
Enter file in which to save the key (/Users/username/.ssh/id_ed25519):
Enterを押すと、
.ssh
フォルダに鍵が生成されます(初回のみディレクトリ作成メッセージが表示されます)。Created directory '/.../username/.ssh'.
-
パスフレーズの設定
続いて、秘密鍵を保護するためのパスフレーズを設定するかどうかを聞かれます。
これはGitHubアカウントのパスワードとは別物で、「秘密鍵ファイルを開くための追加パスワード」です。
Windowsの表示例:
Enter passphrase for "/c/Users/username/.ssh/id_ed25519" (empty for no passphrase): Enter same passphrase again:
Macの表示例:
Enter passphrase (empty for no passphrase):
- パスフレーズを付ける場合:任意の文字列を入力します。
- パスフレーズを付けない場合:空欄のままEnterキーを押します。
パスフレーズを設定すると、万が一秘密鍵が流出しても第三者が利用できなくなり、安全性が大きく向上します。ただし設定した場合、Git操作のたびにパスワード入力が必要になります(後述の ssh-agent を使えば自動化可能)。
今回はパスフレーズを付ける方法で進めますが、ご自身の環境に合わせて選択してください。
-
鍵の作成完了
最後に以下のような表示が出れば、作成完了です。
Windowsの表示例:
Your identification has been saved in /c/Users/username/.ssh/id_ed25519 Your public key has been saved in /c/Users/username/.ssh/id_ed25519.pub The key fingerprint is: SHA256:XXXXXX sample-sample@sample.com The key's randomart image is: +--[ED25519 256]--+ | .o.. | | .o + | | . = O | | .o.. | | .o + | | . = O | +----[SHA256]-----+
Macの表示例:
Your identification has been saved in /Users/usernama/.ssh/id_ed25519 Your public key has been saved in /Users/usernama/.ssh/id_ed25519.pub The key fingerprint is: SHA256:XXXXXX sample-sample@sample.com The key's randomart image is: +--[ED25519 256]--+ | .o.. | | .o + | | . = O | | .o.. | | .o + | | . = O | +----[SHA256]-----+
この状態でSSHキーの作成は完了です。次は、この公開鍵をGitHubに登録して使えるようにします。
GitHub アカウントへ公開鍵の登録
SSH接続を使うには、作成した公開鍵をGitHubアカウントに登録する必要があります。
このセクションでは、前のセクションで作成済みの公開鍵をGitHubに追加する手順を説明します。
-
公開鍵ファイルの確認
まず、ターミナルで
.ssh
フォルダにある鍵ファイルを確認します。ls ~/.ssh
コマンド実行結果の例:
id_ed25519 id_ed25519.pub
今回作成された鍵は以下です。
- 秘密鍵:
id_ed25519
(ご自身の手元に保管する鍵) - 公開鍵:
id_ed25519.pub
(GitHubに登録する鍵)
- 秘密鍵:
-
SSH 公開鍵の情報をコピー
以下のコマンドを実行して、クリップボードへカギの情報をコピーします。
Windows(Git Bash)では以下のコマンドを実行します。
clip < ~/.ssh/[ キーの名前 ] 使用例: clip < ~/.ssh/id_ed25519.pub
Macの場合は次のコマンドを使います。
pbcopy < ~/.ssh/id_ed25519.pub
-
GitHubのアカウントの設定
GitHubにログインし、右上のユーザーアイコンからSettingsを開きます。
-
SSH and GPG keysを開く
左側メニューから「SSH and GPG keys」を選択します。
-
SSHキーを新規登録
「New SSH key」をクリックし、各項目を入力します。
各項目の設定:
-
Title(キー名)
任意の名前を入力します。
-
Key type(キーの種類)
キーの種類を選択(今回はAuthentication Keyを設定)
-
Key(キーの情報)
手順2でコピーした公開鍵の内容を貼り付けます。
全ての入力を終了したあと、「Add SSH key」ボタンをクリックします。
-
-
公開鍵の登録完了
以下のような情報が表示されていれば、鍵の登録は完了です。
公開鍵(.pub
)のみを登録し、秘密鍵は絶対にアップロードしないでください。また、登録後は次のステップで接続テストを行うと良いでしょう。
公開鍵を使用したSSH接続のテスト
公開鍵をGitHubに登録したあとは、実際に接続できるかをテストします。ここで認証が成功すれば、SSHを使ってGitHubとやり取りできる準備が整ったことになります。
-
接続テストコマンドを実行
ターミナルで以下を実行します。
ssh -T git@github.com
-
接続先の確認
初めてSSH接続する場合、以下のようなメッセージが表示されます。これは接続先が本当にGitHubかどうかを信頼してよいかを聞かれています。
ssh -T git@github.com The authenticity of host 'github.com (IPアドレス)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
この
ED25519 key fingerprint is ...
の部分は、GitHubサーバーの公開鍵フィンガープリント です。表示された内容が、GitHub公式に掲載されている公開鍵フィンガープリント一覧と一致していることを確認してください。
GitHubのSSH キーフィンガープリント
GitHub の公開鍵のフィンガープリントは次のとおりです。
`SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s` (RSA) `SHA256:br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ` (DSA - 終了) `SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM` (ECDSA) `SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU` (Ed25519)
▼参考リンク:GitHub の SSH キーフィンガープリント(公式)
表示されたフィンガープリントが上記のいずれかと一致していれば、
yes
と入力して続行します。※ 一致しない場合は、接続先がGitHubではない可能性があるため、入力せずに中断してください。
-
known_hostsへの登録確認(初回のみ)
前の手順で
yes
と入力すると、以下のように表示されます。Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
これは「GitHubの接続情報を信頼済みリスト(known_hosts)に追加しました」という意味です。次回以降は同じフィンガープリントであれば、この確認はスキップされます。
-
パスフレーズの入力(設定している場合)
SSHキー作成時にパスフレーズを設定している場合は、次のように入力を求められます。
Enter passphrase for key '/.../username/.ssh/id_ed25519':
設定したパスフレーズを入力してください。
-
接続成功メッセージを確認
認証に成功すると、以下のようなメッセージが表示されます。
Hi YourName! You've successfully authenticated, but GitHub does not provide shell access.
YourName
部分に自分のGitHubユーザー名が表示されれば、SSH接続のテストは完了です。
SSHキーのパスフレーズ
SSHキーのパスフレーズは、秘密鍵をさらに安全に保護するための追加パスワードです。
これを設定しておくと、たとえ秘密鍵のファイルが盗まれたとしても、パスフレーズを知らなければ利用できません。
パスフレーズの役割
-
秘密鍵の不正利用の防止
万が一、秘密鍵ファイルが第三者の手に渡っても、パスフレーズがなければ利用できません。
-
二重のセキュリティ
公開鍵暗号方式の安全性に加え、もう一段階の認証を追加できます。
設定時の挙動
パスフレーズを設定すると、git push
など ssh
接続のたびにパスワード入力が必要になります。
Enter passphrase for key '/.../username/.ssh/id_ed25519':
毎回入力するのを省略したい場合は、後述の「SSHエージェント」を利用すれば、最初の1回だけ入力して以降は自動で認証できます。
パスフレーズを設定するかどうかの判断
- セキュリティ重視:パスフレーズを設定する(特にノートPCや共有PCの場合)
- 利便性重視:パスフレーズなしにする(自宅の固定PCなど、物理的に安全な環境)
パスフレーズは後から変更や追加も可能です。安全性と利便性のバランスを考え、環境に合わせて設定してください。
ssh-agent と ssh-add の活用
ssh-agent(sshエージェント)は、パスフレーズ付きの秘密鍵を自動で管理し、繰り返しの入力を省くための仕組みです。パスフレーズを設定している場合、Git操作の認証を自動化したいときに活用すると良いでしょう。
sshエージェントの起動と鍵の登録・確認
-
sshエージェントの起動
以下のコマンドでsshエージェントを起動します。
eval "$(ssh-agent -s)"
正常に起動すると、エージェントのプロセスIDが表示されます。
出力例:
eval "$(ssh-agent -s)" Agent pid 1053
-
秘密鍵の登録
起動したsshエージェントに秘密鍵を登録します。
ssh-add ~/.ssh/id_ed25519
パスフレーズを設定している場合は、この時点で1回だけ入力します。
出力例:
Enter passphrase for key '/.../username/.ssh/id_ed25519': Identity added: /.../username/.ssh/id_ed25519 (sample-sample@sample.com)
-
登録の確認
登録されている鍵の一覧は次のコマンドで確認できます。
ssh-add -l
出力例:
256 SHA256:鍵のハッシュ値 sample-sample@sample.com (ED25519)
鍵が表示されれば、登録は完了です。以降のGit操作では、パスフレーズの入力が自動化されます。
パスフレーズを設定しておくことで安全性を高めつつ、sshエージェントを使うことで利便性も確保できます。
ここまでの手順で、SSHキーの作成から登録、接続準備までが整いました。最後に今回の内容を振り返り、ポイントを整理しておきましょう。
この記事で学んだこと
この記事では、SSHキーを使ってGitHubと安全に接続するための一連の手順を解説しました。
具体的には以下のステップを行いました。
- SSHキーの仕組みと役割の理解
- HTTPS接続とSSH接続の違い
- SSHキー(公開鍵と秘密鍵)の作成方法
- 公開鍵をGitHubアカウントへ登録
- SSH接続テストとパスフレーズ設定
- sshエージェントを使ったパスフレーズ入力の省略
初めて取り組むと少し複雑に感じるかもしれませんが、1つずつ手順を進めてみてください。これらの手順を完了すれば、より安全で快適にGit操作が行えるようになります。
ぜひ今回の内容を活用して、少しずつ手を動かしながら、ご自身の開発環境をより快適で安全なGit環境に整えてください。この記事がその後押しとなれば幸いです。
Gitはさまざまな開発現場で使用されているツールです。もし、Git操作が不慣れと感じている方には、次に紹介する学習方法がおすすめです。
Gitの使い方を学ぶ:おすすめの学習方法
「Gitの操作、まだちょっと不安かも…」そんな方におすすめなのが、「エンベーダー」です。 Gitの基本コマンドをはじめ、エンジニアに欠かせないLinuxの知識や操作をブラウザ上で気軽に学べる学習サービスです。
環境構築は不要。わずか5秒で学習環境が起動し、実際にコマンドを入力しながら学べるので、ゲーム感覚で楽しくスキルを習得できます。
エンベーダー公式サイト - Gitの使い方コース
https://envader.plus/course/5/scenario/1055
ポイント1:コマンド入力はすべてブラウザ上で完結。実際に手を動かして学べます。
ポイント2:入力したコマンドの正誤や解説を、すぐに確認できます。
ポイント3:Gitだけでなく、Linuxやデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。
エンベーダーの学習コース一覧
いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。
参考資料
以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

関連記事

2024.05.08
Gitコマンド「git mv」とは?「mv」との違いをあわせて解説します!
この記事では、git mvについての解説を行います。
- git

2024.06.02
リポジトリのメンテナンス係「git gc 」とは?活用方法を徹底解説!
この記事では、リポジトリのメンテナンスに不可欠な「git gc」を解説します。
- git

2024.05.29
Gitで間違ってコミットしたファイルを後から無視する方法 .gitignoreの設定
ここでは、架空のプロジェクト「AwesomeProject」での失敗談を元に、誤って追跡されたファイルを後から管理外にする方法を解説します。
- git

2024.06.02
リポジトリ内の探しものは「git grep」で効率的な検索テクニックを紹介
「git grep」コマンドを使用すると、リポジトリ内のファイルを一度に検索することができて、とても便利なのです。そんなリポジトリ内を一斉検索できる便利なコマンド、「git grep」をこの記事で解説します。
- git