Open4

Gitの初期設定をする

docksidedockside

GItの設定を行いGitHubを利用できるようにするまでのメモです
基礎も基礎の内容ですが、どの記事も少しずつ痒いところに手が届かなかったので。

スクラップを起こした動機は次の通りです

  • sshでの接続が難しくなったのでhttpsで接続できるようにしたい
  • 中途半端になっていたGPGの設定をしっかりとやりきりたい

2. GPG 設定

2-0. 事前準備

  • Windows の場合は GnuPG から Gpg4win を入手してインストール
  • Linux/Mac の場合は gpg --version 等でコマンドが使用可能か確認

2-1. まずはキーを作成

次のコマンドでキー生成を開始できる。
--expert を付与することでキー選択時に ECC などの追加オプションが表示される。

$ gpg --full-generate-key --expert

今回作成したいキーの設定は次の通り。

  • ECC (Ed25519)
  • 使用期限なし

以下はターミナルの操作画面 (適宜、省略や内容のマスク、コメントの追記を行っているので注意)。

$ gpg --full-generate-key --expert

Please select what kind of key you want:
    (1) RSA and RSA (default) 
    (2) DSA and Elgmal
    (3) DSA (sign only)
    (4) RSA (sign only)
    (7) DSA (set your own capabilities)
    (8) RSA (set your own capabilities)
    (9) ECC and ECC
   (10) ECC (sign only)
   (11) ECC (set your own capabilities)
   (13) Existing key
   (14) Existing key from card
Your selection? 9
Please select which elliptic curve you want:
    (1) Curve 25519
    (2) NIST P-256
    (4) NIST P-384
    (5) NIST P-521
    (6)Brainpol P-256
    (7) Brainpool P-384
    (8) Brainpool P-512
    (9) secp256k1
Your selection? 1
Please specify how long the key should be valid.
    0    = key does not expire
    <n>  = key expires in n days
    <n>w = key expires in n weeks
    <n>m = key expires in n months
    <n>y = key expires in n years
Key is valid for? (0) 0

Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: xxxxx xxxxxx
Email address: xxxxx.xxxxx@example.com
Comment:

<Passphrase 入力画面が表示されるので、パスフレーズを設定>

gpg: key <gpg-key-id> marked as ultimately trusted.
gpg: revocation certificate stores as '/home/xxxxx/.gnupg/openpgp-revocs.d/********.rev'
public and secret key reated and signed.

pub ed25519 YYYY-MM-DD [SC]
    ***********************************
uid                xxxxx xxxxx <xxxxx.xxxxx@example.com>
sub cv25519 YYYY-MM-DD [E]

これで完成。
<gpg-key-id> は後で使うので控えておくとよい。

次のコマンドで確認もできる

$ gpg --list-secret-keys --keyid-format=long

sec    ed25519/<gpg-key-id> YYYY-MM-DD [SC]
       ***********************************
uid                [ultimate] xxxxx xxxxx <xxxxx.xxxxx@example.com>
ssb    cv25519/************** YYYY-MM-DD [E]

参考

docksidedockside

2-2. GitHubアカウントにGPG キーを追加

次のコマンドを入力して GPG キー を出力させる。
必要なのは-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----までの文字列。

$ gpg --armor --export <gpg-key-id>
-----BEGIN PGP PUBLIC KEY BLOCK-----

mDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx...
-----END PGP PUBLIC KEY BLOCK-----

次に GitHub にログインし、"Settings"画面の"SSH and GPG keys"を開き、 "New GPG key"ボタンを押下

次の内容を入力してから "Add GPG key" を押下する。

  • Title: キーが識別できる適当なタイトル
  • Key: 最初にコピーした GPG キー

問題なければ登録が完了し、キー一覧に追加したキーが表示される。

docksidedockside

2-3. git 側の設定

ターミナルでGPGキーの指定と有効化を行う

$ git config --global user.signingkey <gpg-key-id>  # 使用する GPG Key を指定
$ git config --global commit.gpgsign true  # commitの署名を有効化
$ git config --global tag.gpgsign true  # tagの署名を有効化

# Windowsユーザ
$ where gpg  # gpg.exe の場所を調べる
$ git config --global gpg.program <path to Gpg4win.exe>  # 上記のパスを指定

# Linux/Macユーザ
$ which gpg
$ git config --global gpg.program <path to gpg>  # 上記のパスを指定
docksidedockside

1. Gitのインストール

1-1. gitバイナリをインストール

公式docを見るのが一番お手軽かつ安全 (ちょっと読みにくいのが玉に瑕)

  • Window ユーザの場合は GCM (Git Credential Manager) のインストールも一緒に行うこと
  • Mac ユーザの場合はインストーラの代わりに Homebrew を利用する方法もある。

1-2. GCMのインストール

公式doc に従ってインストールを行う

  • Windowsの場合は Git のインストール時に合わせてインストールされているのでこの作業は不要