お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
OS::Linux::Ubuntuソフトウェア::GPG

確認環境

Env Ver
Ubuntu 20.04.4 LTS
gpg 2.2.19

手順

  1. gpg -kで削除したいキーの下記XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX相当の部分をコピペ
pub rsa3072 2021-01-17 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ 不明 ] Foo Bar <foobar@example.com>
sub rsa3072 2021-01-17 [E]
  1. gpg --delete-secret-keys XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXで秘密鍵を消す
  2. gpg --delete-keys XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXで公開鍵を消す
  3. gpg -kで削除出来ているか確認

VisualStudio 2022でGitの署名コミットをしようとしたらエラーを吐いたのでその対処法

前提条件

  • Gpg4winをインストールしている
  • cmdから署名コミットができる
  • 最低限以下の設定がある
[user]
	name = your-name
	email = your@example.com
	signingkey = XXXXXXXXXXXXX
[commit]
	gpgsign = true

確認環境

下記のgpgはGpg4winにバンドルされているものです

Env Ver
Visual Studio Community 2022 (64 bit) Version 17.5.1
Git 2.40.0.windows.1
gpg 2.3.4

エラー内容

このエラーをコピーしようとするとVisualStudioがクラッシュしたので頑張って写経しました

Git failed with a fatal error.
Git failed with a fatal error.
hint: core.useBuiltinFSMonitor=true is deprecated; please set core.fsmonitor=ture instead
hint: Disable this message with "git config advice.useBuiltinFSMonitorConfig false"
error: cannot spawn gpg: No such file or directory
error: gpg failed wqrite commit object

対処方法

GitのGlobal Config設定変更で対処する

  1. 次のコマンドを流す
    1. git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
    2. gpg.exeのパスは環境に応じて書き換えること

参考までにWindowsのGlobal Configは%USERPROFILE%.gitconfigにあるのでファイルを編集して対応する場合は、下記内容を追記することで対応できる

[gpg]
	program = "C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe"

keychainというパスフレーズを記憶させるツールを使って記憶させます
shellの初回起動時にパスフレーズを入力させられ、以降多分再起動するまで記憶しておいてくれる気がします

確認環境

Env Ver
keychain 2.8.5
Ubuntu 20.04.5 LTS

手順

  1. keychainのインストール
    1. sudo apt install keychain
  2. keychainの設定
    1. .zshrcとかに次の行を追加
    2. keychain -q --nogui --agents gpg --quick <GPGのkeyid>
      1. GPGのkeyidはgpg --list-secret-keys --keyid-format=longで取得可能

トラブルシュート

ssh と gpg 両方記憶させたい

こんな感じで書くと行ける。shell起動時にSSHのPW -> GPGのPWの順で入力ダイアログが出てくる

keychain -q --nogui --agents ssh,gpg --quick $HOME/.ssh/id_ed25519 <GPGのkeyid>

GPG のキーが見つからないエラーが出る

  • Warning: can't find DEADBEEF; skipping

上記が出た場合
~/.gnupg/gpg.confに対して以下の記述をすることで改善する可能性がある(この対策は不完全かもしれない

keyid-format LONG
投稿日:
ソフトウェア::GPG

使い方の簡単な参考

確認環境

Windowsで確認しているが、 Linuxでも多分同じ

Env Ver
gpg (GnuPG) 2.2.27

基本の使い方

  • 鍵の一覧を確認する
    • gpg --list-keys
    • --with-keygripをつけるとKeyGrip(鍵の識別子?)も見れる
  • 鍵を編集する
    • gpg --edit-key <Name>
    • <Name>は鍵の名前か鍵IDを指定できる
    • --expertをつけると高度な編集が可能になる
    • 対話シェルが起動するのでhelpを叩いてやりたい操作をする
    • 副鍵に対する操作は事前にkey <ID>を指定する必要がある
      • 無指定でdelkeyとかするとエラーになる
  • 鍵をインポートする
    • gpg --import <key-file>