GitHubのログインパスワードが分かっていても、SSH秘密鍵のパスフレーズを解除することはできません。両者は別の認証情報だからです。
macOSのキーチェーンにパスフレーズを保存していた場合は、確認できる可能性があります。保存されていない場合、忘れたパスフレーズは基本的に復元できません。その場合は、既存の鍵を上書きせず、別名で新しいSSH鍵を作成し、公開鍵をGitHubへ登録するのが安全な解決方法です。新しい鍵で接続できることを確認してから、古い鍵を整理してください。([GitHub Docs][1])
GitHubのパスワードとSSH鍵のパスフレーズは別物
最初に、どの認証情報を求められているのかを整理します。
| 認証情報 | 主な用途 | 管理される場所 | 忘れた場合 |
|---|---|---|---|
| GitHubアカウントのパスワード | Webサイトへのログイン、重要な設定変更 | GitHub側 | アカウントの回復手続きを行う |
| SSH鍵のパスフレーズ | ローカルの秘密鍵を利用するときの保護 | 自分のパソコン、キーチェーン、SSHエージェント | 保存情報を確認し、復元できなければ鍵を再作成する |
| SSH公開鍵 | GitHubが接続元を確認するための情報 | GitHubアカウント | 新しい公開鍵を登録できる |
| SSH秘密鍵 | GitHubへのSSH認証に使用する重要情報 | 自分のパソコン | GitHubへ送信・登録してはいけない |
次のような表示が出ている場合、求められているのはGitHubのログインパスワードではなく、秘密鍵に設定したパスフレーズです。
Enter passphrase for key '/Users/username/.ssh/id_ed25519':
この入力欄にGitHubのパスワードを入れても認証は通りません。SSH接続では、ローカルにある秘密鍵を使って本人確認を行います。パスフレーズは、その秘密鍵を保護するために設定したものです。([GitHub Docs][2])
まず、どのSSH鍵が使われているか確認する
鍵を作り直す前に、現在のSSH鍵と設定を確認します。ここを飛ばすと、既存の鍵を上書きしたり、GitHub以外のサーバーへの接続を壊したりする可能性があります。
macOS・LinuxでSSH鍵を確認する
ターミナルで次のコマンドを実行します。
ls -la ~/.ssh
代表的なファイルは次のとおりです。
id_ed25519
id_ed25519.pub
id_rsa
id_rsa.pub
config
known_hosts
拡張子が付いていない id_ed25519 や id_rsa が秘密鍵です。末尾に .pub が付いているファイルが公開鍵です。
WindowsでSSH鍵を確認する
PowerShellで次のコマンドを実行します。
Get-ChildItem "$env:USERPROFILE\.ssh"
Git Bashを使っている場合は、macOSやLinuxと同じコマンドでも確認できます。
ls -la ~/.ssh
SSHエージェントに読み込まれている鍵を確認する
次のコマンドを実行します。
ssh-add -l
鍵のフィンガープリントが表示された場合、その鍵は現在のSSHエージェントに読み込まれています。SSHエージェントに読み込まれている間は、パスフレーズを再入力せずに接続できることがあります。
ただし、SSHエージェントから元のパスフレーズを表示できるわけではありません。パソコンの再起動やエージェントの終了後に、再び入力を求められる可能性があります。SSHエージェントは鍵とパスフレーズの入力負担を管理する仕組みであり、忘れた文字列を復元する仕組みではありません。([GitHub Docs][2])
macOSではキーチェーンに保存されたパスフレーズを確認する
macOSでSSH鍵のパスフレーズをキーチェーンに保存していた場合は、次の手順で確認できる可能性があります。
- Finderから「キーチェーンアクセス」を開きます。
- キーチェーンアクセスの検索欄に「SSH」と入力します。
- 対象と思われるSSH鍵の項目をダブルクリックします。
- 「パスワードを表示」にチェックを入れます。
- Macの管理者パスワードを入力します。
- 保存されていれば、SSH鍵のパスフレーズが表示されます。
検索結果が複数ある場合は、鍵のファイル名や作成時期を手掛かりに確認してください。
キーチェーンに項目がない、または保存されたパスフレーズを確認できない場合は、新しいSSH鍵を作成します。WindowsやLinuxについても、別のパスワード管理ツールなどへ自分で保存していなければ、秘密鍵からパスフレーズを復元することはできません。([GitHub Docs][1])
SSH鍵のパスフレーズを忘れたときの安全な再発行手順
安全に切り替える順序は次のとおりです。
| 順序 | 作業 | 重要なポイント |
|---|---|---|
| 1 | 既存の鍵を確認する | ファイル名と用途を把握する |
| 2 | 別名で新しい鍵を作る | id_ed25519 を上書きしない |
| 3 | SSHエージェントへ追加する | 新しいパスフレーズを入力する |
| 4 | 公開鍵をGitHubへ登録する | .pub ファイルだけを登録する |
| 5 | 新しい鍵を指定して接続確認する | 古い鍵による成功と取り違えない |
| 6 | 実際のリポジトリで確認する | git fetch などを実行する |
| 7 | 古い鍵を整理する | 他のサーバーで使っていないか確認する |
別のファイル名で新しいSSH鍵を作成する
GitHubでは、対応環境であればEd25519形式のSSH鍵を作成できます。古い環境でEd25519を利用できない場合は、RSA 4096ビットを使用する方法があります。([GitHub Docs][2])
macOS・Linuxの場合
次のコマンドを実行します。
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_github_new
[email protected] は、自分のメールアドレスへ置き換えてください。メールアドレスは鍵を識別するためのコメントとして使用されます。
-f で保存先を明示しているため、既存の id_ed25519 を上書きせず、次の名前で作成できます。
~/.ssh/id_ed25519_github_new
~/.ssh/id_ed25519_github_new.pub
Windows PowerShellの場合
次のコマンドを実行します。
ssh-keygen -t ed25519 -C "[email protected]" -f "$env:USERPROFILE\.ssh\id_ed25519_github_new"
保存先のファイル名は、既に存在しない名前を選んでください。
パスフレーズを設定する
コマンドを実行すると、次のように新しいパスフレーズを求められます。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
ここでは、今回から使用する新しいパスフレーズを入力します。
パスフレーズを設定しないことも技術的には可能ですが、秘密鍵ファイルをコピーされた場合のリスクが高くなります。通常は推測されにくいパスフレーズを設定し、信頼できるパスワード管理ツールへ保存する方法が安全です。
新しい秘密鍵をSSHエージェントへ追加する
macOSの場合
まず、SSHエージェントを開始します。
eval "$(ssh-agent -s)"
続いて、新しい鍵を追加し、パスフレーズをキーチェーンへ保存します。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_github_new
新しいパスフレーズを入力してください。macOSでは、標準の ssh-add とキーチェーンを連携させることで、毎回の入力を減らせます。([GitHub Docs][2])
Windowsの場合
管理者権限でPowerShellを開き、SSHエージェントサービスを開始します。
Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent
その後、通常権限のPowerShellを開き直し、新しい秘密鍵を追加します。
ssh-add "$env:USERPROFILE\.ssh\id_ed25519_github_new"
Git for Windowsに同梱されたSSHと、Windows標準のOpenSSHが混在している環境では、使用するSSHエージェントが異なる場合があります。PowerShellでは認証できるのにGit Bashの git push では再び入力を求められる場合は、Gitが使用しているSSHプログラムも確認してください。([GitHub Docs][2])
Linuxの場合
SSHエージェントを開始してから、新しい秘密鍵を追加します。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_github_new
Linuxでは、ログアウトや再起動によってSSHエージェントの状態が失われる場合があります。継続利用する場合は、利用しているデスクトップ環境やシェルのSSHエージェント設定も確認してください。
GitHubへ新しい公開鍵を登録する
GitHubへ登録するのは、必ず末尾が .pub の公開鍵です。
macOSで公開鍵をコピーする
pbcopy < ~/.ssh/id_ed25519_github_new.pub
Windows PowerShellで公開鍵をコピーする
Get-Content "$env:USERPROFILE\.ssh\id_ed25519_github_new.pub" | Set-Clipboard
Linuxで公開鍵を表示する
cat ~/.ssh/id_ed25519_github_new.pub
表示された1行全体をコピーします。公開鍵は通常、次のような形式です。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... [email protected]
GitHubでは、次の順に操作します。
- GitHubへログインします。
- プロフィール画像から「Settings」を開きます。
- 「SSH and GPG keys」を開きます。
- 「New SSH key」または「Add SSH key」を選びます。
- Titleに「Personal PC 2026」など、端末を識別できる名前を入力します。
- Key typeは、通常の接続用であれば認証用の鍵を選びます。
- Key欄へ公開鍵を貼り付けます。
- 「Add SSH key」を選びます。
- 必要に応じて、GitHubアカウントのパスワードや追加認証で設定変更を確認します。
GitHubアカウントのパスワードを使うのは、この設定変更を承認する場面です。SSH秘密鍵のパスフレーズを解除するために使用するわけではありません。([GitHub Docs][3])
秘密鍵を貼り付けない
次のファイルは秘密鍵なので、GitHubの画面、メール、チャット、Issue、スクリーンショットなどへ貼り付けてはいけません。
id_ed25519_github_new
登録するのはこちらです。
id_ed25519_github_new.pub
秘密鍵の内容が外部へ漏れた場合は、その鍵を使用せず、GitHubから対応する公開鍵を削除して、別の鍵を作り直してください。
別名のSSH鍵を使用するよう設定する
新しい鍵を標準名ではなく別名で作成した場合、~/.ssh/config へ設定しておくと、GitHubへの接続で使う鍵を明示できます。
macOSとLinuxでは、次のファイルを開きます。
~/.ssh/config
Windowsでは、通常は次の場所です。
C:\Users\ユーザー名\.ssh\config
1つのGitHubアカウントだけを利用している場合の設定例です。
Host github.com
HostName github.com
User git
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519_github_new
macOSでキーチェーンを使用する場合は、次の行も追加できます。
UseKeychain yes
既に Host github.com の設定がある場合は、設定ファイル全体を置き換えないでください。既存のブロックへ必要な設定だけを追加または修正します。
個人用と仕事用など、複数のGitHubアカウントを使っている場合は、単純に github.com へ1つの鍵を固定すると、別アカウントの接続に影響する可能性があります。その場合は、ホストの別名を使った複数アカウント用の設定が必要です。
新しいSSH鍵を指定して接続を検証する
通常の確認コマンドは次のとおりです。
ssh -T [email protected]
ただし、古い鍵がSSHエージェントに残っていると、古い鍵で認証に成功する可能性があります。それでは、新しい鍵が正しく登録されたか判断できません。
新しい鍵だけを指定して検証するには、macOS・Linuxで次のコマンドを実行します。
ssh -T -i ~/.ssh/id_ed25519_github_new -o IdentitiesOnly=yes [email protected]
Windows PowerShellでは次のように実行します。
ssh -T -i "$env:USERPROFILE\.ssh\id_ed25519_github_new" -o IdentitiesOnly=yes [email protected]
-i は使用する秘密鍵を指定するオプションです。IdentitiesOnly=yes を付けることで、SSHエージェントに登録されている別の鍵ではなく、指定した鍵を使って確認しやすくなります。([OpenBSD Manual Pages][4])
初回接続では、GitHubのホスト鍵に関する確認が表示される場合があります。表示されたフィンガープリントがGitHub公式のものと一致することを確認してから接続を続けてください。
成功すると、GitHubのユーザー名を含む認証成功メッセージが表示されます。GitHubはSSHによるシェル操作を提供していないため、認証に成功していてもコマンドの終了コードが1になることがあります。これは、表示内容が認証成功を示していれば異常とは限りません。([GitHub Docs][5])
実際のリポジトリでも接続を確認する
ssh -T が成功しても、対象リポジトリへの権限やリモートURLが正しいとは限りません。実際に利用するリポジトリへ移動し、次のコマンドを実行します。
git remote -v
SSH接続を利用している場合、リモートURLは一般的に次の形式です。
[email protected]:OWNER/REPOSITORY.git
接続と読み取り権限を確認するには、次のコマンドが使えます。
git ls-remote origin
または、通常の取得処理を実行します。
git fetch
公開鍵を登録したGitHubユーザーと、接続成功メッセージに表示されたユーザーが一致していることも確認してください。
組織でシングルサインオンや独自のアクセス制御を利用している場合は、SSH鍵を登録した後に、組織向けの追加承認が必要になることがあります。GitHub Enterprise Serverなど独自ドメインを利用している場合は、github.com ではなく管理者から指定されたホスト名を使用します。([GitHub Docs][3])
接続確認後に古いSSH鍵を整理する
古い鍵は、新しい鍵で次の確認が完了してから整理します。
- 新しい鍵を指定した
ssh -Tが成功した - 表示されたGitHubユーザー名が正しい
- 実際のリポジトリで
git fetchなどが成功した - 古い鍵をGitHub以外のサーバーで使用していない
- IDE、デプロイツール、スクリプト、バックアップ処理などから参照されていない
古い鍵を削除する前に、次の場所を確認してください。
~/.ssh/config
Gitクライアントの設定
VS CodeのRemote SSH設定
サーバーへのSSH接続設定
CI/CDのシークレット
自動バックアップやデプロイスクリプト
GitHubの「SSH and GPG keys」から古い公開鍵を削除しても、パソコン内の秘密鍵ファイルは自動では削除されません。反対に、パソコン内の秘密鍵を削除しても、GitHubに登録された公開鍵は残ります。両方を別々に整理する必要があります。
古い鍵が他のサーバーでも使われている場合は、先に各接続先へ新しい公開鍵を登録してください。
よくある失敗と対処方法
| 失敗 | 起こる問題 | 対処方法 |
|---|---|---|
| SSHの入力欄へGitHubのパスワードを入力する | パスフレーズが違うため認証できない | SSH鍵作成時のパスフレーズを使う |
| 保存先でそのままEnterを押す | 既存の id_ed25519 を上書きする可能性がある | -f で未使用の別名を指定する |
.pub ではないファイルをGitHubへ貼る | 秘密鍵が漏えいする | 必ず公開鍵だけを登録する |
通常の ssh -T だけで確認する | 古い鍵で成功している可能性がある | -i と IdentitiesOnly=yes で新しい鍵を指定する |
| 接続確認前に古い鍵を削除する | GitHub以外の接続も失う可能性がある | 実際の利用先を確認してから整理する |
Permission denied (publickey) をパスフレーズの問題だと決めつける | 原因の切り分けを誤る | 公開鍵登録、鍵の選択、SSHエージェント、権限を確認する |
エラーメッセージから原因を切り分ける
Bad passphrase, try again
指定された秘密鍵に対して、入力したパスフレーズが一致していません。
macOSのキーチェーンやパスワード管理ツールを確認し、復元できなければ新しい鍵を作成します。
Permission denied (publickey)
GitHubが、SSHクライアントから提示された公開鍵を受け入れられなかった状態です。
主に次の点を確認します。
- 対応する公開鍵をGitHubへ登録したか
- 別のGitHubアカウントへ登録していないか
ssh-add -lに鍵が表示されるか~/.ssh/configのIdentityFileが正しいか- 組織側の承認が必要ではないか
- Gitが別のSSHプログラムを使っていないか
パスフレーズを正しく入力できても、公開鍵がGitHubへ登録されていなければ、このエラーになります。
Could not open a connection to your authentication agent
SSHエージェントが起動していない可能性があります。
macOS・Linuxでは次を実行します。
eval "$(ssh-agent -s)"
Windowsでは、ssh-agent サービスが起動しているか確認します。
No such file or directory
-i や IdentityFile で指定した秘密鍵のパスが間違っています。ファイル名、ユーザー名、拡張子の有無を確認してください。
急いで作業を再開したい場合はHTTPSへ切り替える方法もある
すぐに新しいSSH鍵を用意できない場合は、リポジトリの接続方式をHTTPSへ変更する方法もあります。
git remote set-url origin https://github.com/OWNER/REPOSITORY.git
HTTPS経由では、必要に応じてパーソナルアクセストークンや認証情報マネージャーを利用します。これはSSH鍵のパスフレーズを復元する方法ではなく、別の認証方式へ一時的または恒久的に切り替える方法です。([GitHub Docs][1])
まとめ:復元できなければ別名で鍵を作り直す
GitHubのアカウントパスワードと、SSH秘密鍵のパスフレーズは別のものです。GitHubのパスワードを知っていても、ローカルの秘密鍵は解除できません。
macOSでは、最初にキーチェーンアクセスを確認します。保存されていなければ、既存の鍵を上書きしない別名で新しいSSH鍵を作成してください。
その後は、公開鍵をGitHubへ登録し、新しい秘密鍵を明示した状態で接続を検証します。実際のリポジトリへアクセスできることまで確認してから、古い鍵を整理するのが安全な進め方です。
[1]: https://docs.github.com/en/authentication/troubleshooting-ssh/recovering-your-ssh-key-passphrase “Recovering your SSH key passphrase – GitHub Docs”
[2]: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent “Generating a new SSH key and adding it to the ssh-agent – GitHub Docs”
[3]: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account “Adding a new SSH key to your GitHub account – GitHub Docs”
[4]: https://man.openbsd.org/ssh.1 “ssh(1) – OpenBSD manual pages”
[5]: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection “Testing your SSH connection – GitHub Docs”

コメント