Git を使ってソースコードを管理していると、リモートリポジトリへの push や pull を行う場面が頻繁にあります。多くの方は、初期設定のまま HTTPS を使ってアクセスしているかもしれません。しかし、認証トークンの期限切れや、毎回の認証が煩わしく感じられることもあるでしょう。
そこで今回は、Git リポジトリの push を HTTPS から SSH に変更する手順をご紹介します。SSH を使えば、パスワードの入力なしにスムーズな操作が可能になり、セキュリティ面でも有利です。
本記事では、Mac / Windows のどちらの環境でも共通して使える方法を、初心者の方にもわかりやすく丁寧に解説していきます。すでに Git を利用している方はもちろん、これから SSH 設定にチャレンジしてみたい方にも役立つ内容です。
SSHとは?なぜ使うのか
SSH(Secure Shell)とは、ネットワーク上の機器に安全に接続するためのプロトコルです。Git においては、リモートリポジトリと安全に通信するための手段として活用されます。
Git リポジトリへアクセスする方法には主に「HTTPS」と「SSH」の2種類があります。それぞれに特徴がありますが、以下のような違いがあります。
項目 | HTTPS | SSH |
---|---|---|
認証方法 | ユーザー名+パスワード(またはトークン) | 公開鍵と秘密鍵 |
セキュリティ | トークンの有効期限に注意が必要 | 鍵ペアで安全に認証 |
操作の手間 | pushごとに認証が必要(省略も可能) | 一度設定すればパスワード不要 |
2021年ごろから、GitHub などのサービスではパスワード認証が非推奨となり、HTTPS を使う場合は個人アクセストークンの使用が求められるようになりました。しかし、トークンには有効期限があり、期限切れによるエラーや再設定の手間が発生することがあります。
一方、SSH を使えば、あらかじめ設定した鍵を用いて認証が行われるため、パスワードやトークンの入力は不要です。一度設定すれば、認証情報に煩わされることなく push や pull が可能になります。
そのため、継続的に Git を利用する開発環境では、SSH の使用が推奨されるケースが多いのです。
GitのpushをHTTPSからSSHに変更する手順
ここからは、Git リポジトリの push 方法を HTTPS から SSH に切り替えるための手順を、順を追ってご説明していきます。
SSHキーの作成(または既存の確認)
SSH接続には、公開鍵と秘密鍵のペアが必要になります。すでに作成済みの場合は再利用できますが、初めての方は新しくキーを作成します。
SSHキーが既に作成されているかの確認
ls ~/.ssh
id_rsa
や id_ed25519
などのファイルが表示されれば、既にキーが作成済みです。
表示されない場合は、新しく SSH キーを作成しましょう。
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519
:推奨される鍵の種類(RSA よりもセキュア)-C
はコメント
途中で保存場所を聞かれますが、特に理由がなければそのまま Enter で問題ありません。パスフレーズも任意で設定できます。
SSH公開鍵をGitHubに登録
SSH キーを作成したら、次にその公開鍵(.pub
のファイル)を GitHub に登録します。
まず、公開鍵の中身を表示しましょう。
cat ~/.ssh/id_ed25519.pub
表示された文字列を 全てコピー し、GitHub にログインしたうえで以下の手順を実行します。
1. 右上のアイコンから「Settings」を選択

2. 左メニューから「SSH and GPG keys」を選択

3. 「New SSH key」をクリック
4. 適当なタイトル「例:MacBool、Windows PC など」を入力
5. 先ほどコピーした公開鍵を貼り付け、「Add SSH key」をクリック

GitのリモートURLをSSHに変更する
現在のリモート URL が HTTPS であることを確認するには、以下のコマンドを実行します。
git remote -v
出力例(HTTPS)
origin https://github.com/username/repo.git (fetch)
origin https://github.com/username/repo.git (push)
SSH に変更するには、次のコマンドを実行します。
git remote set-url origin git@github.com:username/repo.git
※ username/repo.git
の部分は、ご自身のリポジトリに置き換えてください。
再度 git remote -v
を実行して、SSH に切り替わっていることを確認しましょう。
origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)
SSH接続のテストとpushの確認
SSH 接続が正しく行えるか確認するには、以下のコマンドを実行します。
ssh -T git@github.com
初回は「接続してもいいか?」と確認されるので、yes
と入力します。
成功すると、次のようなメッセージが表示されます。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
この状態で、通常通り git push
を実行すれば、SSH 経由での push が可能になります。
以上の手順を完了すれば、HTTPS ではなく SSH 経由で Git リポジトリへの push / pull が行えるようになります。毎回の認証が不要となり、より快適な Git 操作が実現できます!
よくあるエラーとその対処法
SSH を使って Git リポジトリに接続する際、設定がうまくいかないとエラーが発生することがあります。ここでは、特によくあるトラブルとその対処法を紹介します。
Permission denied (publickey)
エラー内容
Permission denied (publickey).
fatal: Could not read from remote repository.
原因
対処法
- GitHub の設定画面で、公開鍵が登録されているか確認
- 鍵を SSH エージェントに追加する(必要に応じて)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
- 正しいキーを指定して接続テスト
ssh -i ~/.ssh/id_ed25519 -T git@github.com
Host key verification failed
エラー内容
Host key verification failed.
原因
対処法
以下のコマンドで GitHub のホストキーを再登録しましょう。
ssh-keyscan github.com >> ~/.ssh/known_hosts
※すでに登録済みで問題が解決しない場合は、該当行を削除して再試行。
おわりに
本記事では、Git リポジトリへの push を HTTPS から SSH に変更する方法について、基本的な概念から実践的な手順、よくあるエラーの対処法までを解説しました。
SSH を使った認証は、一度設定してしまえば毎回のパスワード入力が不要になり、セキュアかつ効率的に Git を操作できるのが大きな利点です。とくに、日常的に Git を使う開発者にとっては、SSH の利用は必須ともいえるでしょう。
最初は少しハードルが高く感じるかもしれませんが、慣れてしまえばとても便利です。
ぜひ今回の記事を参考に、ご自身の開発環境でも SSH 接続を活用してみてください。
最後までお読みいただき、ありがとうございました。
コメント