はじめに
PublicなGithubからCloneする際はhttpsを利用しますが、PrivateなGithubからCloneする際はSSHによる鍵認証かHttpsによるユーザ認証にて権限があることを示す必要があります。
本記事ではそれぞれのやり方について簡単に説明します。
環境情報
$ git --version git version 2.30.0.windows.1
SSHを利用する場合
まずは自分のサーバにて公開鍵・秘密鍵を作成します。
$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/xx/.ssh/id_rsa): Created directory '/home/xx/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/xx/.ssh/id_rsa Your public key has been saved in /home/xx/.ssh/id_rsa.pub The key fingerprint is: SHA256: ... The key's randomart image is: +---[RSA 4096]----+ |.+ ..=+*.. | ... |o.*o. | +----[SHA256]-----+
カレントディレクトリにファイルが新規作成されています。
$ ls .ssh/ id_rsa id_rsa.pub
この公開鍵(id_rsa.pub)をGithubの"Setting > SSH and GPG keys"の以下箇所に鍵を登録します。
SSH keys
This is a list of SSH keys associated with your account. Remove any keys that you do not recognize.
登録が完了すればプライベートのGithubドメインに以下コマンドを打てば以下のように鍵登録ができていることが確認でき
$ ssh -T git@github.xxx.com Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
任意のリポジトリをcloneできます。
$ git clone git@github.xxx.com:hoge/fuga.git
HTTPSを利用する場合
基本的にはSSHを利用しますが、Httpsの方が通信速度が早いです。
よって大量のファイル群が格納されているリポジトリをクローンする場合は一度きりでHTTPS形式を利用する場合もあります。
参考までにSSHでは「250.00 KiB/s」でる環境にてHTTPSを利用すると「1.75 MiB/s(約7倍)」の通信速度が出ました。
HTTPSを利用する場合はTokenを作成するため、Githubの”Settings > Developer settings”にて「Personal access tokens」の画面に行き
Tokens you have generated that can be used to access the GitHub API.
上記の通りで新規作成をします。scopeの選択が求めらるのでrepoにチェックを入れます。
ここで表示される文字列がTokenでありそれを控えた上で
$ git clone https://github.xxx.com/hoge/fuga.git
を押下すればUserとパスワードが求められるのでUserはログインする際のアカウント名、パスワードはTokenを入れるとCloneが可能です。
終わりに
基本はパスワード不要のSSHを利用するかとは思いますが、端末が変わったりする際にはHTTPSでの通信が便利なケースもあるのでどちらからでもGithubと通信できるようにしておくと役立つと思います。
以上、ご参考になれば幸いです。