GitHubにコードをpushしようとしたとき、エラー(fatal: Authentication failed for ‘https://github.com/…’)が出て困ったことはないでしょうか?

「昨日まで使えていたのに、急に使えなくなった」、「パスワードを何度入力しても弾かれる」そんな経験をしている方は多いはずです。
これはあなたのパスワードが間違っているわけでも、アカウントに問題があるわけでもありません。
GitHubがセキュリティ強化のためにHTTPSのパスワード認証を廃止したことが原因です。
この記事では、SSH接続を使ってGitHubに安全に接続する方法をステップごとに丁寧に解説します。
読み終えるころには、自分でSSHキーを設定してGitHubにスムーズに接続できるようになります。
はじめに
久しぶりにGitHubにコードをpushしようとしたら、エラーが出てpushができませんでした。
セキュリティ強化のためにSSH接続が必要なのはわかっていましたが、設定がめんどくさいという理由でやっていなかったので、実施しました。
設定の所要時間は慣れていれば10〜15分程度で完了すると思います。
問題
GitHubはパスワード認証の根本的なセキュリティ上の弱さを理由にHTTPS経由のパスワード認証を正式に廃止しました。
代替手段として、GitHubが推奨するのは次の2つです。
- SSH接続:公開鍵・秘密鍵ペアを使った暗号認証
- Personal Access Token(PAT):パスワードの代わりに使うトークン
この記事ではより堅牢で使い勝手のよい、SSH接続の設定方法を解説します。
解決方法
SSH接続の設定方法は以下の手順になります。
- SSHキーを生成する
- 公開鍵をコピーする
- GitHubに公開鍵を登録する
- 接続テスト
- cloneできるか確認
前提:使用するターミナル
Windowsの場合、Git Bash(MINGW64)を使うことを推奨します。コマンドプロンプト(cmd)では `cat` などのコマンドが使えないため、途中でつまずくことがあります。
Git BashはGit for Windowsをインストールすると付属してきます。インストールしていない場合は先にインストールしてください。
Step 1: SSHキーを生成する
以下のコマンドを実行。
`-t ed25519` は暗号アルゴリズムの指定で、現在推奨されている方式です。
`-C` の後ろはGitHubに登録しているメールアドレスを入れます。
ssh-keygen -t ed25519 -C "GitHubに登録しているメールアドレス"実行すると以下のように保存先を聞かれます。
Enter file in which to save the key (/c/Users/ユーザー名/.ssh/id_ed25519):
特にこだわりがなければそのままEnterを押してください。デフォルトの場所(`~/.ssh/id_ed25519`)に保存されます。
続けて、Enter passphrase (empty for no passphrase):でパスフレーズを聞かれます。
セキュリティを高めたい場合は任意のパスフレーズを入力します。
設定しない場合はそのままEnterを押してください。

Step 2: 公開鍵をコピーする
生成した公開鍵の内容をcatコマンドで確認してコピーします。
cat ~/.ssh/id_ed25519.pub表示された `ssh-ed25519 AAAA…` から始まる1行をメールアドレスも含めて全部コピーします。

Step 3: GitHubに公開鍵を登録する
以下の手順でGitHubに公開鍵を登録します。
- GitHubにログイン
- 右上の自分のアイコンをクリック → Settings
- 左メニュー → SSH and GPG keys
- New SSH key をクリック
- Title に適当な名前(例:`MyPC`)を入力
- Key の欄にStep2でコピーした内容を貼り付け
- Add SSH key をクリック
Step 4: 接続テスト
正しく設定できているか確認します。
ssh -T git@github.com初回接続時は以下のメッセージが表示されます。

これはGitHubのサーバーを「信頼するか?」という確認です。
`yes` と入力してEnterを押してください。2回目以降は聞かれなくなります。
成功すると以下のメッセージが表示されます。
Hi ユーザー名! You’ve successfully authenticated, but GitHub does not provide shell access.
Step 5: cloneできるか確認
最後にクローンができるかを確認します。
git clone git@github.com:ユーザー名/リポジトリ名.git -b ブランチ名おわりに
SSH接続を設定することで以前より安全・便利にGitHubを使えるようになりました。
最初は少し難しく感じるかもしれませんが、手順は明確で、一度やれば次は迷いません。この記事の手順通りに進めれば、設定を完了させることができます。
一度設定が完了してしまえば、以後は毎回パスワードを入力する必要がなく、むしろHTTPS認証より便利に使えます。
GitHubを使う以上、SSHの設定は避けて通れないので。ぜひこの機会に設定してみてください。
