はじめに:なぜパスワードを毎回聞かれるのか?
git push をするたびに、毎回下のようにGitHubのユーザー名やパスワードを聞かれて、面倒に感じたことはありませんか?
私自身、なぜ毎回情報を入力しなければならないのかと疑問に感じておりました。以下が求められる入力内容です。
Username for '[https://github.com](https://github.com)': <your_name>
Password for 'https://<your_name>@github.com':
これは、リポジトリをhttps://で始まるHTTPS形式のURLでクローンまたは登録していることが原因です。
現在、GitHubではセキュリティ向上のため、このパスワード認証が廃止されています。
この記事では、この問題に対応するための主要な2つの接続方法、「HTTPS(アクセストークン利用)」と「SSH」のそれぞれの設定手順と、両者の違いを分かりやすく解説します。
目次
解決策1:HTTPS接続の方法(アクセストークン編)
まず、HTTPSを使い続ける場合の解決策です。パスワードの代わりに「パーソナルアクセストークン」を利用します。
パーソナルアクセストークンとは?
パーソナルアクセストークン(Personal Access Token, PAT)とは、パスワードの代わりとなる文字列です。パスワードよりも安全で、有効期限や権限(スコープ)を細かく設定できるのが特徴です。
アクセストークンの発行手順
- GitHubにログインし、右上のプロフィールアイコンから [Settings] を選択します。
- 左のメニューを一番下までスクロールし、[<> Developer settings] をクリックします。
- [Personal access tokens] > [Tokens (classic)] を選択します。
- [Generate new token] > [Generate new token (classic)] をクリックします。
-
Noteにトークンの利用目的(例:
My Laptop Git Token)を記入します。 -
Expirationでトークンの有効期限を設定します(例:
90 days)。 -
Select scopesで、このトークンに与える権限を選択します。Gitの操作で使うだけなら、
repoにチェックを入れれば十分です。 - 一番下の [Generate token] ボタンをクリックします。
✨ 重要: ghp_... から始まるトークン文字列が表示されます。この文字列はこの画面を閉じると二度と表示されません。 必ずコピーして、パスワードマネージャーなどに安全な場所に保管してください。
アクセストークンの使い方
git pushなどで認証を求められたら、以下のように入力します。
- Username: あなたのGitHubユーザー名
- Password: 先ほどコピーしたアクセストークンを貼り付け
これで認証が通ります。
解決策2:SSH接続の方法(公開鍵認証編)
こちらは、より推奨されることが多い、パスワード入力が一切不要になる方法です。
SSH接続とは?
SSH接続は、「このPCからの接続は、信頼できるものとして許可する」という仕組みです。
一度PCとGitHubに設定をしてしまえば、それ以降は認証が自動的に行われます。
ステップ1: SSHキーペアの作成
まず、あなたのPCで認証に使うためのデジタルな鍵(SSHキー)を作成します。
ターミナルで以下のコマンドを実行してください。
ssh-keygen -t ed25519 -C "your_email@example.com"
Note
your_email@example.comの部分には、ご自身のGitHub登録メールアドレスを入れるのが一般的です。
このコマンドにより、PC内に2つの鍵(キーペア)が作成されます。
-
秘密鍵 (
id_ed25519): あなたのPCだけに保管しておく、絶対に他人に見せてはいけない鍵です。 -
公開鍵 (
id_ed25519.pub): 通信相手(今回はGitHub)に渡しておくための鍵です。
ステップ2: 公開鍵のGitHubへの登録
次に、作成した公開鍵をGitHubに登録します。
以下のコマンドで公開鍵の中身を表示し、クリップボードにコピーしてください。
cat ~/.ssh/id_ed25519.pub
表示された ssh-ed25519 ... から始まる文字列をすべてコピーしたら、以下の手順でGitHubに登録します。
- GitHubにログインし、右上のプロフィールアイコンから [Settings] を選択します。
- 左のメニューから [SSH and GPG keys] をクリックします。
- [New SSH key] ボタンを押します。
-
Titleには、どのPCの鍵か分かるような名前(例:My MacBook Air)を自由につけます。 -
Keyの欄に、先ほどコピーした公開鍵の文字列を貼り付け、[Add SSH key] をクリックします。
ステップ3: GitのリモートURLをSSH形式に変更
最後に、ローカルリポジトリの接続先URLを、HTTPS形式からSSH形式に変更します。
リポジトリのディレクトリ内で、以下のコマンドを実行してください。
git remote set-url origin git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git
Note
YOUR_USERNAMEとYOUR_REPOSITORYの部分は、ご自身のものに書き換えてください。
git remote -vを実行すると、現在設定されているURLが確認できます。
これで、git pushなどのコマンドがSSHプロトコル経由で実行され、認証が自動で行われるようになります。
まとめ:HTTPSとSSH、どちらを使うべき?
最後に、両者の違いをまとめます。
| 観点 | HTTPS接続 (アクセストークン) | SSH接続 (公開鍵認証) |
|---|---|---|
| 認証方法 | ユーザー名 + トークン | 公開鍵・秘密鍵ペア |
| 初回設定 | 比較的簡単(トークン発行のみ) | やや手順が多い(鍵作成と登録) |
| 日々の利用 | 認証情報を求められる(PCに保存可) | 認証不要でスムーズ |
| セキュリティ | トークンが漏洩すると危険 | 鍵管理が必要だが、より安全性が高い |
| ネットワーク | ほぼ全ての環境で利用可 (Port 443) | 稀にファイアウォールでブロック (Port 22) |
結論
- 継続的に開発を行うPCなら、一度設定すれば後が非常に楽なSSH接続が断然おすすめです。
- 一時的にしか使わない環境や、厳しいファイアウォール下で作業する場合は、HTTPS接続が手軽な選択肢となります。
この設定で、日々のgitコマンド操作が格段にスムーズになります。ぜひご自身の環境に合わせて試してみてください!