GitHubのプライベートリポジトリをクローンする方法3選
GitHub上にホストされているプライベートリポジトリをクローンするために、認証方式について公式ドキュメントを参照したところ、これまで筆者が利用していた方式から更新されていることに気づきました。
リンクのドキュメントを読めばそれで終わりな話ではありますが、筆者のように更新に気づかず推奨されない方式で認証している方がいるかもしれないので、それぞれの簡易なチュートリアルと所感を書きます。
GitHub CLI
gh
でお馴染みのGitHub CLIはリポジトリのクローンも可能です。
パッケージマネージャーなどからコマンドをインストールしたら認証コマンドを実行します。
$ gh auth login
# 認証の確認
$ gh auth status
# リポジトリをクローン
# zenn-dev/zenn-editorはパブリックリポジトリなので設定が失敗していてもクローンできる点に注意
$ gh repo clone https://github.com/zenn-dev/zenn-editor
Good🙆
- クローンまでのステップが短い
Not Good🙅
- この記事では「GitHubの」とターゲットを絞ってはいますがGitHub以外では使えない
- Gitコマンドの使い分けが必要になる
Git Credential Manager(おすすめ)
Microsoftが開発しているGit Credential Manager(GCM)を利用すると、PATを発行せずに認証できます。
# macOSでhomebrewを使ったインストール例
$ brew install git
$ brew tap microsoft/git
$ brew install --cask git-credential-manager-core
+ [credential]
+ helper =
+ helper = /usr/local/share/gcm-core/git-credential-manager-core
+ [credential "https://dev.azure.com"]
+ useHttpPath = true
Azure DevOpsを使わない人はhttps://dev.azure.com
のセクションは不要です。
OSによってコマンドのパスは変わるので、どのPATHにインストールされたかは確認します。
# (オプション)configureコマンドでも設定可
$ git-credential-manager-core configure
# 初回クローン時にOAuthによる認証が行われます
$ git clone https://github.com/zenn-dev/zenn-editor
Good🙆
- GitHub PATの発行が不要
- GitHub以外にも対応
Not Good🙅
- .gitconfigで設定が必要なため、不慣れなユーザーは手間取る可能性が考えられる
sshで認証
お馴染み鍵交換方式による認証です。
公式のドキュメントでも秘密鍵はEdDSAで作成するコマンドに変わっていました。
昔RSA 2048で作成した鍵をずっと利用されている場合は暗号強度が十分でないため、作成し直すことをおすすめします。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
$ eval "$(ssh-agent -s)"
$ open ~/.ssh/config
~/.ssh/config
をこんな感じで作成or追記
Host *.github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
公開鍵はGitHub CLIから登録可能です。
$ ssh-add ~/.ssh/id_ed25519
$ gh ssh-key add ~/.ssh/id_ed25519.pub
# 接続確認
$ ssh -T git@github.com
$ git clone git@github.com:zenn-dev/zenn-editor.git
ファイアウォールなどで22番ポートが塞がれている場合はssh over httpsでも認証できます。
Host github.com
Hostname ssh.github.com
Port 443
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
# 接続確認
$ ssh -T -p 443 git@ssh.github.com
# URLがssh.github.comな点に注意
$ git clone git@ssh.github.com:zenn-dev/zenn-editor.git
今回は紹介するだけにとどめますが、YubiKeyのようなU2F、FIDO2に対応したを鍵を認証に利用することもできます。
Good🙆
- httpsを提供していないリモートリポジトリも利用可
- セキュリティキーと組み合わせるとよりセキュアな認証ができる
Not Good🙅
- 設定手順、項目が多い
- 秘密鍵の取り扱いに注意が必要
まとめ
GitHub(github.com)のみの利用であればGCMの利用が設定手順、可用性あたりのバランスが取れていると思います。
Discussion