【Git】リポジトリのpushをSSHに変更する手順を解説!【Mac/Windows共通】

スポンサーリンク

Git を使ってソースコードを管理していると、リモートリポジトリへの push や pull を行う場面が頻繁にあります。多くの方は、初期設定のまま HTTPS を使ってアクセスしているかもしれません。しかし、認証トークンの期限切れや、毎回の認証が煩わしく感じられることもあるでしょう。

そこで今回は、Git リポジトリの push を HTTPS から SSH に変更する手順をご紹介します。SSH を使えば、パスワードの入力なしにスムーズな操作が可能になり、セキュリティ面でも有利です。

本記事では、Mac / Windows のどちらの環境でも共通して使える方法を、初心者の方にもわかりやすく丁寧に解説していきます。すでに Git を利用している方はもちろん、これから SSH 設定にチャレンジしてみたい方にも役立つ内容です。

SSHとは?なぜ使うのか

SSH(Secure Shell)とは、ネットワーク上の機器に安全に接続するためのプロトコルです。Git においては、リモートリポジトリと安全に通信するための手段として活用されます。

Git リポジトリへアクセスする方法には主に「HTTPS」と「SSH」の2種類があります。それぞれに特徴がありますが、以下のような違いがあります。

項目HTTPSSSH
認証方法ユーザー名+パスワード(またはトークン)公開鍵と秘密鍵
セキュリティトークンの有効期限に注意が必要鍵ペアで安全に認証
操作の手間pushごとに認証が必要(省略も可能)一度設定すればパスワード不要

2021年ごろから、GitHub などのサービスではパスワード認証が非推奨となり、HTTPS を使う場合は個人アクセストークンの使用が求められるようになりました。しかし、トークンには有効期限があり、期限切れによるエラーや再設定の手間が発生することがあります。

一方、SSH を使えば、あらかじめ設定した鍵を用いて認証が行われるため、パスワードやトークンの入力は不要です。一度設定すれば、認証情報に煩わされることなく push や pull が可能になります。

そのため、継続的に Git を利用する開発環境では、SSH の使用が推奨されるケースが多いのです。

GitのpushをHTTPSからSSHに変更する手順

ここからは、Git リポジトリの push 方法を HTTPS から SSH に切り替えるための手順を、順を追ってご説明していきます。

SSHキーの作成(または既存の確認)

SSH接続には、公開鍵と秘密鍵のペアが必要になります。すでに作成済みの場合は再利用できますが、初めての方は新しくキーを作成します。

SSHキーが既に作成されているかの確認

ls ~/.ssh

id_rsaid_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.

原因

  • SSH キーが GitHub に登録されていない
  • 鍵が正しく読み込まれていない
  • SSH エージェントに秘密鍵が追加されていない

対処法

  1. GitHub の設定画面で、公開鍵が登録されているか確認
  2. 鍵を SSH エージェントに追加する(必要に応じて)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
  1. 正しいキーを指定して接続テスト
ssh -i ~/.ssh/id_ed25519 -T git@github.com

Host key verification failed

エラー内容

Host key verification failed.

原因

  • GitHub のホスト情報が ~/.ssh/known_hosts に未登録
  • ホストキーが変更されてセキュリティ警告が出ている

対処法

以下のコマンドで GitHub のホストキーを再登録しましょう。

ssh-keyscan github.com >> ~/.ssh/known_hosts

※すでに登録済みで問題が解決しない場合は、該当行を削除して再試行。

おわりに

本記事では、Git リポジトリへの push を HTTPS から SSH に変更する方法について、基本的な概念から実践的な手順、よくあるエラーの対処法までを解説しました。

SSH を使った認証は、一度設定してしまえば毎回のパスワード入力が不要になり、セキュアかつ効率的に Git を操作できるのが大きな利点です。とくに、日常的に Git を使う開発者にとっては、SSH の利用は必須ともいえるでしょう。

最初は少しハードルが高く感じるかもしれませんが、慣れてしまえばとても便利です。
ぜひ今回の記事を参考に、ご自身の開発環境でも SSH 接続を活用してみてください。

最後までお読みいただき、ありがとうございました。

Git
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました