はじめに
こんにちは。ニフティの山田です。
意外と知らない方が多そうだったので、今回はPATを使わないGitHubのアクセス方法について紹介します。
前提
GitHubではHTTP経由でのID/パスワード認証が廃止され、現在は許可されていません。
このため、git clone
などの際にID・パスワードを入力しても弾かれてしまいます。(ブラウザと同様です)
なので、
- HTTP
- Personal Access Token(PAT)
- OAuth認証
- SSH
の3通りの接続方法から選ぶことになります。
SSHが使える環境ではSSHを使えばよいのですが、環境によってはSSHを通せず、HTTPを使用する必要がある場合もあります。
PAT
PATは古くからある方法であり、Personalの文字通り、個人に紐づくトークンを手動で発行・管理します。
- 手動管理する鍵であり、管理の漏れや漏洩の可能性がある
- 用途ごとに鍵を分けるのか使い回すのか…など、鍵管理を考える必要がある
というように管理負担もセキュリティリスクもあり、なるべく使いたくない選択肢です。
OAuth認証
前提で記載した2つ目の選択肢です。OAuth認証後に発行されるトークンでもGitHubへのアクセスが可能となります。
OAuthなのでブラウザが必要ですが、Git実行PCと別のPCでも問題ありません。
GitHub Desktopを使う方法
インストール・起動して指示通りに進めばGitHubへOAuth認証を促されます。
GitHub Desktopがログインできている状態であればOAuthトークンが有効なので、gitコマンドでの操作でも認証が通ります。
GitHub CLIを使う方法
コマンドライン上で完結させたい場合はGitHub CLIをインストールします。
macOSであればhomebrewから
1 |
brew install gh |
でのインストールも可能です。
インストール後
1 |
gh auth login |
でログインできます。あとは普通にgitコマンドを叩けば完了です。
操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ gh auth login ? Where do you use GitHub? GitHub.com ? What is your preferred protocol for Git operations on this host? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How would you like to authenticate GitHub CLI? Login with a web browser ! First copy your one-time code: XXXX-XXXX Press Enter to open <https://github.com/login/device> in your browser... ✓ Authentication complete. - gh config set -h github.com git_protocol https ✓ Configured git protocol ! Authentication credentials saved in plain text ✓ Logged in as xxxxxx |
途中の「Press Enter to~」でEnterを押すとブラザが開くので、ブラウザ側でログインしてコードを入力します。
なおブラウザでのコード入力を要求されますが、この操作は別マシンのブラウザで行っても問題ありません。なのでサーバ上でも問題なくログインが可能です。
制約
- PATと異なり、有効期限がない(設定もできない)
- GitHub画面上から無効化しない限り、無期限にずっと使えてしまう
- 短期にしてほしいというissueはある https://github.com/cli/cli/issues/5924
- PATと異なり、権限制御はできない
- 自動化目的であればPATを使う
おわりに
今回はPATを使わないGitHubのアクセス方法について紹介しました。
この機会にPATの管理負担なども考慮して、OAuth認証でのGitHubアクセスを試してみるのはいかがでしょうか。