🏹
Gitコマンド入門::Gitカスタマイズ機能(config,SSH keys4)第八十一回
みなさんこんにちは! 今回も、前回の続きを進めて行きますね! 尚、タイトルと内容が多少ことなってきていますが、特に気にしないでくださあ~い。(^▽^;) 前回は、8番を実行しつつも、9、10番まで、確認できましたね。ポイントは、両方のアカウントがGitHubに登録されていて、それぞれGitHubにPGP公開鍵を登録しておけば、両者の間の署名付きのコミットは、Verified として、承認済となることでした。今回は、GitHubを持っていないカウントで署名した場合を学習して行きますね。
今回も、こちらのドキュメントの続きです。
7.4 Git のさまざまなツール - 作業内容への署名
前回の記事はこちらから!
git本家のドキュメントメニューはこちら!
ここまでの手順は、こんな感じです。
- | 1st アカウント側 | 2nd アカウント側 | 補足 |
---|---|---|---|
1 | - | PGP証明書作成 | gpg --gen-key |
2 | - | git commit -S | 署名付きコミット |
3 | - | git push | Githubにプッシュ |
4 | - | PGP証明書Export | gpg -o <FILE> -a --export <Mail> |
5 | git clone | - | git clone <URL> |
6 | PGP証明書import | - | gpg --import |
7 | PGP証明書承認 | - | gpg --edit-key 5番を選択 |
8 | git push | - | 1st 側のGithubにプッシュ |
9 | Verified | - | 2nd 側のGPG公開鍵を、GitHubサイトが自動補完! |
10 | Unverified | Unverified | 2nd 側のPGP公開鍵を削除! |
3つめのアカウントを用意する。3rdアカウント!
- GitHub のユーザーアカウントは、無し!
- メールアドレスは、新規作成
- Linux のユーザーアカウントも、新規作成
- | 1st アカウント | 2nd アカウント | 3rd アカウント |
---|---|---|---|
GitHub | shiozumi-esmile | shiozumi-makoto | - |
shiozumi@esmile-hd.jp | shiozumi@e-smile.ne.jp | test@esmile-hd.com | |
Linux | shiozumi | chi | test |
test カウントで、前回同様、2nd側のリモートリポジトリから、clone します!
$ git clone https://github.com/shiozumi-makoto/20210412.git
Cloning into '20210412'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 9 (delta 0), reused 9 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
// フォルダー移動して!
$ cd 20210412
// log 確認
$ git log --show-signature --oneline -1
1b81f9b (HEAD -> main, origin/main, origin/HEAD)
gpg: 2021年04月12日 07時53分37秒 JSTに施された署名
gpg: RSA鍵24A0A56EC0BC3E95を使用
gpg: 署名を検査できません: 公開鍵がありません
3rd
こちらも前回同様で、公開鍵をインポートします!
gpg --import /tmp/shiozumi_esmile_ne_jp_key.txt
前回のファイルが残っていれば、いきなりインポート実行!
もしも、残っていないなら、2ndアカウントにログインしなおして、エクスポートを実行してから、インポートしてください。
gpg -o /tmp/shiozumi_esmile_ne_jp_key.txt -a --export shiozumi@e-smile.ne.jp
$ gpg --import /tmp/shiozumi_esmile_ne_jp_key.txt
gpg: 鍵C0BC3E95: 公開鍵"Chi Shiozumi <shiozumi@e-smile.ne.jp>"をインポートしました
gpg: 処理数の合計: 1
gpg: インポート: 1 (RSA: 1)
gpg --edit-key 24A0A56EC0BC3E95
$ gpg --edit-key 24A0A56EC0BC3E95
gpg> trust // <!-- trust を入力!
他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください
(パスポートを見せてもらったり、他から得たフィンガー・プリントを検査したり、などなど)
1 = 知らない、または何とも言えない
2 = 信用し ない
3 = ギリギリ信用する
4 = 充分に信用する
5 = 絶対的に信用する
m = メーン・メニューに戻る
あなたの決定は? 5 <!-- 5番を入力
本当にこの鍵を絶対的に信用しますか? (y/N) y
pub 2048R/C0BC3E95 作成: 2021-04-11 有効期限: 無期限 利用法: SC
信用: 究極 有効性: 不明の
sub 2048R/45644EB8 作成: 2021-04-11 有効期限: 無期限 利用法: E
gpg> quit <!-- quit を入力!
git log --show-signature --oneline -1
$ git log --show-signature --oneline
1b81f9b (HEAD -> main, origin/main, origin/HEAD)
gpg: 2021年04月12日 07時53分37秒 JSTに施された署名
gpg: RSA鍵24A0A56EC0BC3E95を使用
gpg: "Chi Shiozumi <shiozumi@e-smile.ne.jp>"からの正しい署名
3rd
gpg --list-keys --keyid-format LONG
一覧表示!
$ gpg --list-keys --keyid-format LONG
/home/test/.gnupg/pubring.gpg
-----------------------------
pub 2048R/20441C849970DB65 2021-04-08
uid Test Shiozumi <test@esmile-hd.com>
sub 2048R/8BB93855E6653190 2021-04-08
pub 2048R/EBC2380DB58F4418 2021-04-08
uid Makoto Shiozumi <shiozumi@esmile-hd.jp>
sub 2048R/A154ABB85611F5FB 2021-04-08
pub 2048R/24A0A56EC0BC3E95 2021-04-11
uid Chi Shiozumi <shiozumi@e-smile.ne.jp>
sub 2048R/9ED0CF3045644EB8 2021-04-11
- | 1st アカウント | 2nd アカウント | 3rd アカウント |
---|---|---|---|
shiozumi@esmile-hd.jp | shiozumi@e-smile.ne.jp | test@esmile-hd.com | |
pub | EBC2380DB58F4418 | 24A0A56EC0BC3E95 | 20441C849970DB65 |
git remote rename
リネームしてから!
前回同様、$ git remote rename origin origin_2nd
$ git remote add origin https://github.com/shiozumi-esmile/20210412.git
$ git remote -v
origin https://github.com/shiozumi-esmile/20210412.git (fetch)
origin https://github.com/shiozumi-esmile/20210412.git (push)
origin_2nd https://github.com/shiozumi-makoto/20210412.git (fetch)
origin_2nd https://github.com/shiozumi-makoto/20210412.git (push)
$ git branch -avv
* main 1b81f9b [origin_2nd/main] 3rd
remotes/origin_2nd/HEAD -> origin_2nd/main
remotes/origin_2nd/main 1b81f9b 3rd
git push -u origin test
ローカルmainブランチから、チェックアウトして、test.txt ファイルを追加後、署名付きでコミットして、testブランチをプッシュします!
$ git checkout -b test
Switched to a new branch 'test'
$ git branch -avv
main 1b81f9b [origin_2nd/main] 3rd
* test 1b81f9b 3rd
remotes/origin_2nd/HEAD -> origin_2nd/main
remotes/origin_2nd/main 1b81f9b 3rd
// 新しくファイルを追加!
$ echo "test@esmile-hd.com" > test.txt
// add してからの!
$ git add test.txt
// -S 署名付きコミット
$ git commit -S -m "4th"
// log 確認
$ git log --show-signature --oneline -2
e893e74 (HEAD -> test)
gpg: 2021年04月13日 10時20分36秒 JSTに施された署名
gpg: RSA鍵20441C849970DB65を使用
gpg: "Test Shiozumi <test@esmile-hd.com>"からの正しい署名
4th
1b81f9b (origin_2nd/main, origin_2nd/HEAD, main)
gpg: 2021年04月12日 07時53分37秒 JSTに施された署名
gpg: RSA鍵24A0A56EC0BC3E95を使用
gpg: "Chi Shiozumi <shiozumi@e-smile.ne.jp>"からの正しい署名
3rd
// testブランチをプッシュ!
$ git push -u origin test
Username for 'https://github.com': shiozumi-esmile
Password for 'https://shiozumi-esmile@github.com':
// 中略~
To https://github.com/shiozumi-esmile/20210412.git
* [new branch] test -> test
Branch 'test' set up to track remote branch 'test' from 'origin'.
// ブランチ確認!
$ git branch -avv
main 1b81f9b [origin_2nd/main] 3rd
* test e893e74 [origin/test] 4th
remotes/origin/test e893e74 4th
remotes/origin_2nd/HEAD -> origin_2nd/main
remotes/origin_2nd/main 1b81f9b 3rd
それでは、1st側でGithubにログインして確認!
gpg --armor --export 20441C849970DB65
$ gpg --armor --export 20441C849970DB65
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQENBGBuT4sBCADIQwjF7kzsUEp9Kt+Z7yDa5RgGJZTGwcPEaBjToi6MU/tJKF2b
yTo3jFAXoWehEPAmim7Lw6CX8NNzHEpM4bedGJfruPJbewcT1buR5wZSx+sAQF4H
wZSy78+JAAS67it6LzxfRJkzluik+qxIsi7a4xR5dGJMGRLnAcx3dmUFJd07Rxnc
// 中略~
-----END PGP PUBLIC KEY BLOCK-----
エクスポートして、GitHubに登録します!
無事、Verified ステータスに変わりましたね!
まとめ
さあ、いかがでしょうか? 前回は、GitHubのアカウントを持っているユーザーで、既にGPG公開鍵を登録している場合でした。今回は、アカウントを持っていないユーザーのケースでしたね。まあ~どちらに統一するのが良いのかは、今のところ経験がありませんので、何ともいませんけど、少なくても、複数ユーザーで署名付きのリポジトリを作成できることだけは、これで問題ないかと思います。SSH接続でのパスワードなし、pushで作業効率UP、GPG署名で信用度UP!
それでは、今回はここまで、お疲れ様でした!
Discussion