# 身份認證 - [SSH Key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) - [GPG Key](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key) - [Commit Signature](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) ## SSH Key 生成 4096 位元 RSA 密鑰,電子信箱為 GitHub 帳號註冊用的,一路按 `Enter` 到結束 ```shell $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 印出目前電腦 RSA 密鑰的公鑰,將其貼到 GitHub 帳號設定中的 SSH Key ```shell $ cat ~/.ssh/id_rsa.pub ``` ## GPG Key GPG Key 可以讓使用者每一次的 Commit 都有實名認證,同樣需要生成密鑰,第一部選擇加密方式,選擇第 `0` 個使用 RSA 加密,第二部選擇密鑰長度,跟 SSH 一樣輸入 4096,之後一路按 `Enter`,輸入使用者名稱還有電子信箱就和 GitHub 帳號相同 ```shell $ gpg --full-generate-key ``` 輸出密鑰,密鑰要留在本機 ```shell $ gpg --list-secret-keys --keyid-format=long /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot <hubot@example.com> ssb 4096R/4BB6D45482678BE3 2016-03-10 ``` 使用密鑰生成公鑰,以上面的例子密鑰為 `3AA5C34371567BD2`,公鑰要上傳到 GitHub 設定中的 GPG Key,公鑰包含 `-----BEGIN PGP PUBLIC KEY BLOCK-----` 和 `-----END PGP PUBLIC KEY BLOCK-----`,全部都要貼到 GPG Key ```shell $ gpg --armor --export 3AA5C34371567BD2 ``` 設定 Git 使用此 GPG Key,讓每次 Commit 都會自動添加 Signature ```shell $ git config --global user.signingkey 3AA5C34371567BD2 $ git config --global commit.gpgsign true $ git config --global gpg.program gpg ```