GitHubにGPGキーを登録する


[2020オープンソースカントリーコメンテーター]オフライントレーニングにおいて行われたことに基づいて、GPG鍵生成およびGitHub登録方法が記述される.

GPGキーの作成


GPG鍵を生成するにはgpg命令を使用し、そのためにはgnupgパッケージが必要である.
存在しない場合は、次のコマンドを使用してインストールします.
~$ sudo apt install gnupg
もちろん、オペレーティングシステムによって具体的な方法が異なります.
私は奮闘するユーザーで、私の基準で書きます.
上記のコマンドを実行すると、最新バージョンが既に存在することを示します.
それは気にしないで、次の続きを続けます.gpgコマンドでGPG鍵を生成できるようになりました.
このコマンドを使用する前に、プロファイルを作成する必要があります.
ファイルがない場合は、新しいファイルを作成し、ファイルがある場合は、下部に追加する方法でファイルを作成できます.
~$ vi ~/.gnupg/gpg.conf
personal-digest-preferences SHA512
cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
ファイルを生成した後、以下のコマンドを使用してGPGキーを生成できます.
~$ gpg --full-generate-key
次のように表示されます.
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
1と入力し、Enterを入力します.
または、enterのみを打つ場合は、デフォルトは1に設定されます.
次にキーのビット数を設定します.
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)
推奨4096、4096を入力し、enterを入力します.
鍵のビット数を設定すると、鍵の有効期間を設定する必要があります.
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)
2年程度使用することをお勧めします.2yダーターを入力します.
最後に、個人情報を入力し、実名とよく使われる電子メールを使用します.
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: 
Email address: 
Comment: 
すべての設定が完了したら、入力したアイデンティティ情報が一致しているかどうかを確認する必要があります.
確認して、問題がなければ、次のステップのために
Okayの略Oを入力し、パスワードを要求するときに使用するパスワードを入力すればよい.
GPG鍵が生成されました.
40文字または数値からなる文字列が表示されます.
これを指印指紋と呼び,最後の8桁をKeyIDと呼ぶ.
指の印刷は、次のコマンドで確認することもできます.
~$ gpg --fingerprint
//指プリントが出てくるので、しっかり覚えておきましょう.
//指紋を覚えなくてもいいので、指紋の確認方法を覚えておきましょう.
要求印刷//指の普通はすべてKeyIDでチャットすることができます

GitHubに登録


GitHub右上のメニューで、Settingボタンを押します.

セットメニューではSSH and GPG keysというやつを見つけることができます.

ここでは、GPG鍵をNew GPG Keyで登録する.

下図のように-----BEGIN PGP PUBLIC KEY BLOCK-----から始まります.

この『-----BEGIN PGP PUBLIC KEY BLOCK-----から』gnupgラップおよび指プリントによって得ることができる.
端末に戻って以下の内容を入力すると、長文の情報が出力されます.
//もちろん、[핑거프린트]部分はそれぞれの指紋で代用します.
~$ gpg --armor --export [핑거프린트]
-----BEGIN PGP PUBLIC KEY BLOCK-----
//省略内容
-----END PGP PUBLIC KEY BLOCK-----
このメッセージをコンテンツおよび前後-----にコピーし、貼り付けます.Add GPG keyボタンを押すと、以下のGPGキーが追加されていることを確認できます.

署名送信


では、コミット時に署名を適用してコミットする方法について説明します.
この場合,提出したPCには独自のGPG鍵が必要である.
デスクトップとノートパソコンで使用したい場合は?
GPGキーの移動方法については後述する.
コミット中に署名するためには、.gitconfigに署名情報を追加する必要がある.
このファイルを直接変更しないで、git configコマンドで変更しましょう.
~$ git config --global user.signingkey [핑거포인트]
コミット時に-Sオプションを追加して署名できるようになりました.
//大文字と小文字を区別し、大文字であることを覚えておきましょう.
~$ git commit -S -m "Signed Commit! YEAHHHHH"
//ここでエラーが発生した場合は、エラーが発生していないかよくチェックしてください.
//誤字はありません.もし問題があれば、別途連絡してくれれば確認します.
署名は、ログの出力時に--show-signatureオプションを追加することによって確認できます.
毎回このように署名オプションをあげるのがおっくうなら(...)常に署名するように設定することもできます.
~$ git config --global commit.gpgsign true

GPGキーの移動


すぐに無駄な命令を下すことができますが、まず理解してから行いましょう.
後で必要なら、その時に来ても大丈夫です.

エクスポート


GPGキーをエクスポートするPCで次のコマンドを実行します.
~$ gpg --output [적당한 공개키 파일 이름].gpg --armor --export [핑거프린트]
~$ gpg --output [적당한 비밀키 파일 이름].gpg --armor --export-secret-key [핑거프린트]
適当に名前をつけよう
秘密鍵を導出する際にGPG鍵を生成する際に使用するパスワードを要求することができる.
また、秘密鍵は絶対に漏らさないように注意しましょう.lsコマンドで確認すると、作成した名前に従って*.gpgファイルが生成されます.

読み込み


生成された*.gpgファイルをGPGキーをロードするPCに移動します.
次のコマンドを実行します.
~$ gpg --import [적당한 공개키 파일 이름].gpg
~$ gpg --allow-secret-key-import --import [적당한 비밀키 파일 이름].gpg
//見つからない場合は、./を貼って、経路を明記します.
うまく移行すれば、以下のコマンドで指の印刷をチェックできます.
~$ gpg --fingerprint
漏洩防止のため、*.gpgファイルが削除されます.
~$ rm [적당한 공개키 파일 이름].gpg [적당한 비밀키 파일 이름].gpg

キーサーバ


公開鍵を鍵サーバに配置し、他の人は名前または電子メールで公開鍵を知ることができます.
たとえば...

@ピーターの公開鍵はkeyserver.ubuntu.comに登録され、対応する鍵サーバ上で見つけることができる.
鍵サーバは定期的に同期しているそうですが...
同期であれば、他の場所で確認することもできます.
サイトで確認しなくても、端末で検索できます.
~$ gpg --keyserver [키 서버] --search-keys [이름 또는 이메일]
たとえば...

しかし、鍵サーバでは、現在のトピックは重要ではありません.
いつか電子署名、暗号化、復号化について議論する必要がある場合は、
一緒に話しましょう.

Reference


関連内容はGitHub公式文書で確認することもできます.
  • Generating a new GPG key
  • Adding a new GPG key to your GitHub account
  • Signing commits