SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/09

SSH接続でコマンド操作しか出来ない環境でも、GitHubからリポジトリをクローンし、利用する方法をまとめました。
手順
SSHキーの設定
ssh-keygen
コマンドとは
ssh-keygen
は、SSHで使用する「公開鍵」と「秘密鍵」を生成するためのコマンドです。鍵ペアを作成することで、パスワードを使わずに認証を行える「公開鍵認証」を設定できます。
ssh-keygen -t <暗号化方式>
# (-tオプションで暗号化方式を指定、-Cでコメント(通常はメールアドレス)を付加)
# rsa(デフォルト): 一般的な RSA 鍵。
# ed25519: 最新で軽量な鍵タイプ。推奨されることが多い。
# ecdsa: 楕円曲線暗号の鍵。
GitHubでSSH接続を利用
GitHubでSSH接続を利用するために、事前にSSHキーを設定します。SSH接続先で作業する場合も、この手順を参考にしてください。
- 作業対象のリモート端末(SSH接続先)で上記コマンドを実行してください。
- 生成されたSSHキーは通常
~/.ssh/id_ed25519
に保存されます。
ssh-keygen -t ed25519 -C "username"
# GitHubではメールアドレスを識別情報として使うのが一般的
ssh-keygen -t ed25519 -C "your_email@example.com"
# ホスト名をコメントとして追加するのも一般的
ssh-keygen -t ed25519 -C "dev-server-01"
どのディレクトリで鍵ペアを作成するか?
通常、ssh-keygen
はデフォルトのキー保存先(~/.ssh/
ディレクトリ)で実行されるのが一般的です。理由は以下の通りです:
- セキュリティと一貫性
SSHキーは通常、~/.ssh/
ディレクトリに保存され、そこから管理されることが標準的です。 - デフォルト設定の簡便さ
デフォルト設定では、~/.ssh/id_rsa
や~/.ssh/id_ed25519
のように保存され、SSHクライアントが自動的にこれらを参照します。 - アクセス制御
~/.ssh
ディレクトリは通常、アクセス権が厳密に制御されており、セキュリティ面で有利です。
ubuntu_usr1@XXX1657:~/vba-formatter$ ls -a
. .. .env Dockerfile docker-compose.yml node_modules package.json src
ubuntu_usr1@XXX1657:~/vba-formatter$ cd ..
ubuntu_usr1@XXX1657:~$ ls -a
. .aws .bash_history .bashrc .docker .lesshst .profile .viminfo
.. .azure .bash_logout .cache .landscape .motd_shown .sudo_as_admin_successful vba-formatter
PS C:\Users\ww\.ssh> ssh mm@192.168.x.x
(mm@192.168.x.x) Password:
Last login: Sat Jan 11 18:25:15 2025 from 192.168.x.x
mm@mmMacBook-Air ~ % ssh-keygen -t ed25519 -C "github-for-macbook"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/mm/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/mm/.ssh/id_ed25519
Your public key has been saved in /Users/mm/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxx github-for-macbook
The key's randomart image is:
+--[ED25519 256]--+
|*B=.o....... |
|+B.. =+. o. |
|..o oo++o . |
| .o==o . |
| o+oSo. . |
| ...* . |
| o = E o |
| . * o . o |
| o.+ . |
+----[SHA256]-----+
Enter file in which to save the key で鍵の保存場所を設定
問題なければエンターでOK
変更した場合configファイルの設定をする必要があります(下記~「Key is invalid. You must supply a key in OpenSSH public key format」エラーとなった場合~セクションで解説)
パスフレーズ(passphra$se)の入力
- 設定オプション:
- 空のまま Enter を押す → パスフレーズなし
- パスフレーズを設定 → 追加のセキュリティ
- パスフレーズを設定した場合:
- 秘密鍵を使用するたびにパスフレーズの入力が必要
- 秘密鍵が漏洩した場合でも、パスフレーズがないと使用できない
- パスフレーズなしの場合:
- 使用時に追加の入力が不要で便利
- ただし、秘密鍵が漏洩した場合のリスクが高まる
一般的な選択:
- 個人使用のローカル開発環境 → パスフレーズなし(空欄)でもOK
- 本番環境や重要なシステム → パスフレーズを設定することを推奨
選択後、同じパスフレーズの再入力を求められます。
フィンガープリント(fingerprint)
使用例:
- サーバーに初めて接続する時、表示されるフィンガープリントが正しいものか確認
- GitHubなどのサービスでキーを登録する際の確認
- システム管理者がユーザーのキーを確認する際の参照
公開鍵をGitHubに登録
cat ~/.ssh/id_ed25519.pub
コピーした内容をGitHubの「Settings > SSH and GPG keys」に追加します。

GitHubからリポジトリをクローン
GitHubからリポジトリのコピーを行います。
- GitHubのリポジトリページに移動。
- 「Code」ボタンをクリックし、「SSH」タブを選択してリポジトリURLをコピー。
- SSH接続先で下記を実行:
# 目的のディレクトリに移動する場合
cd Documents
# 現在の場所を確認
pwd
# クローンを実行
git clone git@github.com:username/repository.git
# 特定のブランチをクローン時にチェックアウト
git clone -b ブランチ名 リポジトリURL
「Key is invalid. You must supply a key in OpenSSH public key format」エラーとなった場合
このエラーは、GitHubがSSH公開鍵認証に失敗したことを示しています。
今回の原因はシステムが探している秘密鍵のパスが見つけられないためでした。(デフォルトのファイル名(id_rsa, id_ed25519など)以外の名前を使用しているため、SSHクライアントが鍵を見つけられていません。)
ssh接続先を複数メンバーで共有しており(同じユーザー)、鍵ペアをメンバーごとに区別したかったため
~/.ssh/config
ファイルを作成して、GitHubに使用する鍵を明示的に指定する必要があります
Host github-myname # ← ここで指定した名前
HostName github.com # 実際の接続先
User git
IdentityFile ~/.ssh/myname-github-key
クローンコマンド
git clone git@github-yourname:username/repository.git
# github-yournameはconfigファイルで指定した名前
# usenameは公開鍵を登録したGithubアカウント
他のプロジェクトメンバーへの説明
共有サーバーでのGitHub SSH設定について
現在の共有サーバーでは、複数メンバーが同一ユーザーアカウントを使用しているため、
GitHub接続用のSSH鍵は以下のルールで管理することにしました:
1. 鍵の作成
- 各自の鍵は ~/.ssh/ ディレクトリに「名前-github-key」の形式で作成
例)ssh-keygen -t ed25519 -f ~/.ssh/yourname-github-key
2. GitHubでの設定
- 作成した公開鍵(yourname-github-key.pub)の内容をGitHubの
Settings → SSH and GPG keys → New SSH keyに登録
3. リポジトリのクローン
- 通常の「git@github.com:~」の代わりに「git@github-yourname:~」を使用
例)git clone git@github-yourname:username/repository.git
※既に myname-github-key が設定されていますので、同じ形式で作成いただければ
問題なく共存できます。

-
検索
(例) debug search etc.. -
カテゴリー
-
Windows↔️Macで文字化けしたZIPファイルを解決する方法【7-Zip活用ガイド】
更新日:2025/02/18
-
本番環境 / ステージング環境 でのGitブランチ切り替え方法と注意点 Note: witching to ‘origin/new_feature’. You are in ‘detached HEAD’ state…
更新日:2025/02/16
-
複数のWordPressサイトをまとめて検索・管理するには?
更新日:2025/02/16
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/14
-
【WordPress】カスタムフィールド作成の仕方「ACF」Advanced Custom Fieldsの使用法
更新日:2024/06/10
298 view
-
mixhostでのWordPress利用について
更新日:2024/04/02
295 view
-
scrollHint
更新日:2024/03/13
246 view
-
LOLIPOPでWordPressインストール(サブディレクトリにインストールしたWordPressをドメイン直下で表示)
更新日:2024/06/13
235 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
234 view
-
Sass導入方法
更新日:2024/03/13
206 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
-
【Snow Monkey】Googleサーチコンソール登録
更新日:2024/05/28
157 view
-
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
129 view
-
【ショートコード】編集画面で任意の場所にHTMLファイルを挿入
更新日:2024/01/26
122 view
-
tailwindcss使い方
更新日:2024/03/13
119 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
119 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
105 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
83 view
-
【2022年】WordPressセキュリティー対策おすすめプラグイン2選
更新日:2022/02/21
70 view
-
【必須】ワードプレスセキュリティー対策まとめ【2022年】
更新日:2025/02/16
69 view
-
「THE THOR」を半年使ってみて、レビュー【メリット・デメリット】
更新日:2025/02/16
45 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
43 view
-
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
41 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
-
THE THOR(ザ・トール)でグーグルアドセンスを使う
更新日:2025/02/16
39 view
-
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/02/06
34 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
-
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
28 view
-
VSCodeプラグイン「 Pretter – Code formatter」「PHP Intelephense 」
更新日:2025/01/06
26 view
-
【CSS JavaScript サンプルコード】アコーディオン 続きを読む(Read more)Toggle 折りたたみコンテンツ
更新日:2025/02/05
23 view
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/16
22 view
-
【WordPressプラグイン】人気記事 管理 WordPress Popular Posts 実践的なカスタマイズ
更新日:2025/02/15
22 view
-
Googleアドセンスとは?〜前編〜
更新日:2025/02/16
22 view
-
【WordPress】プラグイン不使用でカスタムタクソノミーを設定、絞り込み検索について
更新日:2025/01/26
18 view
-
スマートフォンファーストのWeb開発実践ガイド
更新日:2025/01/23
16 view
-
WordPressでカスタムフィールドを使った記事のスコアリングシステムの実装
更新日:2025/01/27
15 view
-
AWSのOCRサービス完全ガイド:Textract、Rekognition、Comprehendの使い分け
更新日:2025/02/09
14 view