「GitHubにpushするたびにパスワード入力…面倒!」 「HTTPSでクローンしたら認証エラーが出た」 「SSH接続って難しそう…」
実は、SSH鍵を一度設定すれば、 パスワード入力なしで安全にGitを使えるんです!
しかも、HTTPSよりセキュアで高速。 プロの開発者が必ずSSHを使う理由がここにあります。
この記事では、SSH鍵の作成から git cloneの実行まで、 つまずきポイントを完全カバーして解説します。
30分後には、あなたも 「SSHマスター」になれますよ!
SSHとHTTPSの違い:なぜSSHを使うべきか

接続方法の比較
項目 | SSH | HTTPS |
---|---|---|
URL形式 | git@github.com:user/repo.git | https://github.com/user/repo.git |
認証方法 | SSH鍵(自動) | ユーザー名+パスワード/トークン |
セキュリティ | 公開鍵暗号(最強) | SSL/TLS(強い) |
利便性 | パスワード不要 | 毎回入力が必要 |
初期設定 | やや複雑 | 簡単 |
ファイアウォール | 22番ポート | 443番ポート |
SSHのメリット
1. パスワード入力が不要
# HTTPSの場合(毎回認証)
$ git push
Username: your-username
Password: ******* # 毎回入力...
# SSHの場合(自動認証)
$ git push # そのまま実行!
2. より安全
- パスワードがネットワークを流れない
- 鍵ペアによる強固な認証
3. 複数アカウントの管理が楽
- GitHub個人用、会社用を簡単に切り替え
いつSSHを使うべき?
SSH推奨の場面:
- 頻繁にpush/pullする
- チーム開発
- 自動化スクリプト
- セキュリティ重視
HTTPS推奨の場面:
- 一時的な利用
- 公開リポジトリの読み取りのみ
- ファイアウォール制限環境
ステップ1:SSH鍵の生成(初回のみ)
既存のSSH鍵を確認
まず、既にSSH鍵を持っているか確認:
# SSH鍵の確認(Mac/Linux/Git Bash)
ls -la ~/.ssh
# Windowsコマンドプロンプト
dir %USERPROFILE%\.ssh
以下のファイルがあれば既に鍵あり:
id_rsa
/id_rsa.pub
(RSA鍵)id_ed25519
/id_ed25519.pub
(Ed25519鍵)
新しいSSH鍵を生成
Ed25519鍵の生成(推奨)
# Ed25519鍵を生成(最新・高速・安全)
ssh-keygen -t ed25519 -C "your-email@example.com"
入力を求められる項目:
- 保存場所
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):
→ Enterキーでデフォルト場所に保存
- パスフレーズ
Enter passphrase (empty for no passphrase):
→ 追加セキュリティが必要なら設定(省略可)
- パスフレーズの確認
Enter same passphrase again:
→ 同じパスフレーズを再入力
RSA鍵の生成(互換性重視)
古いシステムとの互換性が必要な場合:
# RSA 4096ビット鍵を生成
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
生成された鍵の確認
# 生成された鍵を確認
ls -la ~/.ssh/
# 出力例
-rw------- id_ed25519 # 秘密鍵(絶対に共有しない!)
-rw-r--r-- id_ed25519.pub # 公開鍵(GitHubに登録する)
ステップ2:GitHubにSSH鍵を登録
公開鍵をコピー
Mac/Linuxの場合
# クリップボードにコピー(Mac)
pbcopy < ~/.ssh/id_ed25519.pub
# クリップボードにコピー(Linux)
xclip -selection clipboard < ~/.ssh/id_ed25519.pub
# または表示してコピー
cat ~/.ssh/id_ed25519.pub
Windowsの場合
# Git Bash
cat ~/.ssh/id_ed25519.pub
# PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard
# コマンドプロンプト
type %USERPROFILE%\.ssh\id_ed25519.pub
GitHubに鍵を追加
- GitHubにログイン
- Settings(設定)へ移動
- 右上のプロフィール画像 → Settings
- SSH and GPG keys を選択
- 左メニューの「SSH and GPG keys」
- New SSH key をクリック
- 情報を入力
- Title:識別しやすい名前
- 例:「Personal MacBook」「Work Laptop」
- Key type:Authentication Key
- Key:コピーした公開鍵を貼り付け
- Title:識別しやすい名前
- Add SSH key をクリック
- GitHubパスワードで確認
接続テスト
# GitHubへの接続をテスト
ssh -T git@github.com
# 初回接続時の警告
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
# yesと入力
# 成功時のメッセージ
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
ステップ3:SSHでgit cloneを実行

基本的なクローン
# SSH URLでクローン
git clone git@github.com:username/repository.git
# 例:実際のリポジトリ
git clone git@github.com:facebook/react.git
ディレクトリ名を指定してクローン
# 別名でクローン
git clone git@github.com:username/repository.git my-project
# カレントディレクトリにクローン
git clone git@github.com:username/repository.git .
ブランチを指定してクローン
# 特定ブランチのみクローン
git clone -b develop git@github.com:username/repository.git
# 単一ブランチのみ(履歴も最小限)
git clone --single-branch -b main git@github.com:username/repository.git
浅いクローン(Shallow Clone)
# 最新のコミットのみ取得(高速)
git clone --depth 1 git@github.com:username/repository.git
# 最新10コミットを取得
git clone --depth 10 git@github.com:username/repository.git
GitLab・Bitbucketでの設定
GitLabの場合
# SSH鍵の登録
# 1. GitLab → Preferences → SSH Keys
# 2. 公開鍵を貼り付け
# 接続テスト
ssh -T git@gitlab.com
# クローン
git clone git@gitlab.com:username/repository.git
Bitbucketの場合
# SSH鍵の登録
# 1. Personal settings → SSH keys
# 2. Add key で公開鍵を追加
# 接続テスト
ssh -T git@bitbucket.org
# クローン
git clone git@bitbucket.org:username/repository.git
独自GitサーバーSSH鍵の管理
設定ファイル(~/.ssh/config)の活用
# ~/.ssh/config を作成/編集
nano ~/.ssh/config
設定例:
# GitHub個人用
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
# GitHub会社用
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
# GitLab
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_gitlab
# 社内GitLab
Host git.company.com
HostName git.company.com
User git
Port 2222
IdentityFile ~/.ssh/id_ed25519_company
使い分けの例
# 個人GitHubアカウント
git clone git@github.com:personal/repo.git
# 会社GitHubアカウント(エイリアス使用)
git clone git@github-work:company/repo.git
# 社内GitLab
git clone git@git.company.com:team/project.git
既存リポジトリをHTTPSからSSHに変更
リモートURLの確認
# 現在のリモートURL確認
git remote -v
# 出力例(HTTPS)
origin https://github.com/username/repo.git (fetch)
origin https://github.com/username/repo.git (push)
SSHに変更
# HTTPSからSSHに変更
git remote set-url origin git@github.com:username/repository.git
# 確認
git remote -v
# 出力例(SSH)
origin git@github.com:username/repository.git (fetch)
origin git@github.com:username/repository.git (push)
一括変換スクリプト
#!/bin/bash
# すべてのHTTPS URLをSSHに変換
for repo in $(find . -name .git -type d); do
cd $(dirname $repo)
# 現在のURLを取得
url=$(git remote get-url origin 2>/dev/null)
if [[ $url == https://github.com/* ]]; then
# HTTPSをSSHに変換
ssh_url=$(echo $url | sed 's|https://github.com/|git@github.com:|')
git remote set-url origin $ssh_url
echo "Changed: $url -> $ssh_url"
fi
cd - > /dev/null
done
トラブルシューティング
エラー1:Permission denied (publickey)
原因と解決策:
# 1. SSH鍵が正しく読み込まれているか確認
ssh-add -l
# 鍵が表示されない場合は追加
ssh-add ~/.ssh/id_ed25519
# 2. 正しい鍵が使われているか確認(詳細ログ)
ssh -vT git@github.com
# 3. 鍵の権限を確認
ls -la ~/.ssh/
# 正しい権限:
# .ssh ディレクトリ: 700
# 秘密鍵: 600
# 公開鍵: 644
# 権限を修正
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
エラー2:Host key verification failed
解決方法:
# known_hostsから古いエントリを削除
ssh-keygen -R github.com
# 再度接続
ssh -T git@github.com
# yesで新しいホスト鍵を受け入れる
エラー3:Could not open a connection to your authentication agent
解決方法:
# ssh-agentを起動(Bash)
eval $(ssh-agent -s)
# ssh-agentを起動(Fish shell)
eval (ssh-agent -c)
# 鍵を追加
ssh-add ~/.ssh/id_ed25519
エラー4:ssh: connect to host github.com port 22: Connection refused
ファイアウォールで22番ポートがブロックされている場合:
# ~/.ssh/config に追加
Host github.com
Hostname ssh.github.com
Port 443
User git
# テスト
ssh -T git@github.com
エラー5:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
GitHubのホスト鍵が変更された場合:
# エラーメッセージの指示に従って該当行を削除
# 例:
sed -i '3d' ~/.ssh/known_hosts
# または手動で編集
nano ~/.ssh/known_hosts
# github.comの行を削除
高度な設定とTips
SSH鍵のパスフレーズ管理
macOSのキーチェーン活用
# ~/.ssh/config に追加
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
ssh-agentの自動起動(Linux/WSL)
# ~/.bashrc に追加
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519
fi
デプロイキーの設定
リポジトリ専用の鍵(読み取り専用/読み書き可能):
# デプロイ用の鍵を生成
ssh-keygen -t ed25519 -f ~/.ssh/deploy_key_repo1
# GitHubリポジトリ → Settings → Deploy keys
# 公開鍵を追加
# ~/.ssh/config に設定
Host github-deploy-repo1
HostName github.com
User git
IdentityFile ~/.ssh/deploy_key_repo1
# 使用
git clone git@github-deploy-repo1:username/repo1.git
署名付きコミット
# GPG署名の代わりにSSH署名を使用(Git 2.34+)
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
# 署名付きコミット
git commit -S -m "Signed commit"
ProxyJump(踏み台サーバー経由)
# ~/.ssh/config
Host git-internal
HostName git.internal.com
User git
ProxyJump bastion.company.com
IdentityFile ~/.ssh/id_ed25519
セキュリティのベストプラクティス

1. 秘密鍵の保護
絶対にやってはいけないこと:
- ❌ 秘密鍵をGitHubにアップロード
- ❌ メールで送信
- ❌ クラウドストレージに平文保存
推奨事項:
- ✅ パスフレーズを設定
- ✅ 定期的に鍵を更新(年1回)
- ✅ 用途別に鍵を分ける
2. 鍵の定期更新
# 古い鍵をバックアップ
mv ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.old
mv ~/.ssh/id_ed25519.pub ~/.ssh/id_ed25519.pub.old
# 新しい鍵を生成
ssh-keygen -t ed25519 -C "your-email@example.com"
# GitHubで古い鍵を削除、新しい鍵を追加
3. 緊急時の対応
鍵が漏洩した可能性がある場合:
- すぐにGitHub/GitLabから鍵を削除
- 新しい鍵を生成
- アクセスログを確認
- 不審なコミットがないか確認
よくある質問(FAQ)
Q1:複数のGitHubアカウントを使い分けるには?
A:SSH configでホストエイリアスを設定します。
# ~/.ssh/config
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
# 使用例
git clone git@github-personal:myname/personal-project.git
git clone git@github-work:company/work-project.git
Q2:Windowsでssh-keygenが使えない
A:Git for Windowsをインストールします。
- Git for Windowsをインストール
- Git Bashを起動
- 通常のLinuxコマンドとして実行
または、PowerShellで:
# OpenSSHクライアントを有効化(Windows 10/11)
Add-WindowsCapability -Online -Name OpenSSH.Client
Q3:パスフレーズを忘れた
A:新しい鍵を作り直す必要があります。
パスフレーズは回復できないため、 新しい鍵ペアを生成して GitHubに登録し直してください。
Q4:会社のプロキシ環境で使えない
A:HTTPSトンネリングを使用します。
# ~/.ssh/config
Host github.com
HostName ssh.github.com
Port 443
User git
ProxyCommand connect -H proxy.company.com:8080 %h %p
Q5:Ed25519とRSAどちらを使うべき?
A:Ed25519を推奨します。
- Ed25519:新しい、高速、安全、短い鍵
- RSA:互換性が高い、古いシステムでも動作
2023年以降のシステムなら Ed25519で問題ありません。
まとめ:もうパスワード入力とはさよなら!
SSH認証の設定は、最初は面倒に感じるかもしれませんが、 一度設定すれば永続的に便利になります。
設定手順のおさらい:
- ✅ SSH鍵を生成(ssh-keygen)
- ✅ 公開鍵をGitHubに登録
- ✅ 接続テスト(ssh -T)
- ✅ git clone実行
SSHのメリット:
- パスワード入力不要
- より安全な認証
- 複数アカウントの管理が簡単
- 自動化に最適
次のステップ:
- 既存リポジトリをSSHに変更
- SSH configで効率化
- デプロイキーの活用
- 署名付きコミット
これで、あなたも「SSHマスター」です!
毎日の開発が格段に楽になるはずです。 さあ、今すぐSSH鍵を設定して、 快適なGit生活を始めましょう!
コメント