(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Git】プライベートGithubからSSH/HTTPSでcloneを行う方法

スポンサーリンク

はじめに

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と通信できるようにしておくと役立つと思います。

以上、ご参考になれば幸いです。