永らく更新をサボっておりました。。。
色々バタバタしていたこともあり、去年はほぼ何も趣味作業が出来ずじまいのまま一年が過ぎ去りました。
やっと落ち着いてきて作業も再開できそうな感じになってきたが、PCのクリーンインストールをしてその後放置状態だったため、各種環境の復元から始めることになってしまった。
このサボっている間にgithub等で使用していた各種鍵が期限切れになっており、git push
すら出来ない事態に。
今回の記事はgpg2
で生成した後、期限切れになった鍵を更新する方法についてメモ代わりに残したもの。
鍵の更新
今回の更新作業で参考にさせてもらったサイトを次に記載しました。各種詳細についてはリンク先を参照してもらうことにして 、本記事では自分が更新を行う上で少し躓いた部分について記載していく。
- gpg のはなし · GitHub
- GPG Agent のプロンプトが別のタブで出ていた時の話 - Qiita
- OpenSSH の認証鍵を GunPG で作成・管理する | text.Baldanders.info
- gpg-agent の設定: GnuPG in Ubuntu | text.Baldanders.info
基本的にはGnuPGのコンソールを起動して、鍵を選択→期限の更新を行った後Master Keyを使って更新を反映する という手順でOK。自分の場合以前に次の記事で取り上げた通り、Master Keyはオフラインで保存していたため それを復元してから作業を実施した。
$ gpg2 --expert --edit-key <Master Keyの公開鍵>
expire
というコマンドで鍵の有効期限が設定できることはわかったのだが、鍵を選択する方法がいまいち
ピンとこなかったので手順を残しておく。
結果的にはコンソールでkey <ID>
とすると鍵が選択できて、選択された鍵には*
が付与されるというだけの話だった。
鍵の複数選択も次の通り可能で、expire
コマンド実行時には選択された鍵に対して期限の設定が実行される。
gpg> key 4 sec nistp521/AAAAAAAAAAAAAAAA 作成: 2019-09-16 有効期限: 無期限 利用法: C 信用: 究極 有効性: 究極 ssb nistp521/BBBBBBBBBBBBBBBB 作成: 2019-09-16 有効期限: 2026-04-17 利用法: SA ssb* nistp521/CCCCCCCCCCCCCCCC 作成: 2019-09-16 有効期限: 2026-04-17 利用法: E ssb nistp521/DDDDDDDDDDDDDDDD 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A ssb* rsa4096/EEEEEEEEEEEEEEEE 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A [ 究極 ] (1). diningyo (master key) <hoge@fuga.com> gpg> key 3 sec nistp521/AAAAAAAAAAAAAAAA 作成: 2019-09-16 有効期限: 無期限 利用法: C 信用: 究極 有効性: 究極 ssb nistp521/BBBBBBBBBBBBBBBB 作成: 2019-09-16 有効期限: 2026-04-17 利用法: SA ssb* nistp521/CCCCCCCCCCCCCCCC 作成: 2019-09-16 有効期限: 2026-04-17 利用法: E ssb* nistp521/DDDDDDDDDDDDDDDD 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A ssb* rsa4096/EEEEEEEEEEEEEEEE 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A [ 究極 ] (1). diningyo (master key) <hoge@fuga.com> gpg> key 1 sec nistp521/AAAAAAAAAAAAAAAA 作成: 2019-09-16 有効期限: 無期限 利用法: C 信用: 究極 有効性: 究極 ssb* nistp521/BBBBBBBBBBBBBBBB 作成: 2019-09-16 有効期限: 2026-04-17 利用法: SA ssb* nistp521/CCCCCCCCCCCCCCCC 作成: 2019-09-16 有効期限: 2026-04-17 利用法: E ssb* nistp521/DDDDDDDDDDDDDDDD 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A ssb* rsa4096/EEEEEEEEEEEEEEEE 作成: 2019-09-16 有効期限: 2023-09-15 利用法: A [ 究極 ] (1). diningyo (master key) <hoge@fuga.com>
この状態で鍵の期限を設定するコマンドexpire
を実行して、表示にしたがって鍵の期限を設定する。
key
コマンドで複数の鍵を設定している場合のみ、下記のように設定時に複数の鍵の期限を変更することに対しての確認が行われる。
gpg> expire 4 本当に複数の副鍵の失効期限を変更しますか? (y/N) y 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で期限切れ <n>w = 鍵は n 週間で期限切れ <n>m = 鍵は n か月間で期限切れ <n>y = 鍵は n 年間で期限切れ 鍵の有効期間は? (0) 3y 鍵は2026年04月17日 21時10分00秒 JSTで期限切れとなります これで正しいですか? (y/N) y sec nistp521/AAAAAAAAAAAAAAAA 作成: 2019-09-16 有効期限: 無期限 利用法: C 信用: 究極 有効性: 究極 ssb* nistp521/BBBBBBBBBBBBBBBB 作成: 2019-09-16 有効期限: 2026-04-17 利用法: SA ssb* nistp521/CCCCCCCCCCCCCCCC 作成: 2019-09-16 有効期限: 2026-04-17 利用法: E ssb* nistp521/DDDDDDDDDDDDDDDD 作成: 2019-09-16 有効期限: 2026-04-17 利用法: A ssb* rsa4096/EEEEEEEEEEEEEEEE 作成: 2019-09-16 有効期限: 2026-04-17 利用法: A [ 究極 ] (1). diningyo (master key) <hoge@fuga.com>
なお、gpg2のコンソール起動直後はデフォルトキーとして主鍵が選ばれており、その際には次のように表示が主鍵になる。
gpg> expire 主鍵の有効期限を変更します。 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で期限切れ <n>w = 鍵は n 週間で期限切れ <n>m = 鍵は n か月間で期限切れ <n>y = 鍵は n 年間で期限切れ 鍵の有効期間は? (0) 0 鍵は無期限です これで正しいですか? (y/N) y
期限の再設定が完了したあとはsave
コマンドで変更内容を反映して終了すればOK。
このときMaster Keyの秘密鍵が存在しない状態だと、次のようにエラーが出て失敗する。
gpg> expire 副鍵の有効期限を変更します。 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で期限切れ <n>w = 鍵は n 週間で期限切れ <n>m = 鍵は n か月間で期限切れ <n>y = 鍵は n 年間で期限切れ 鍵の有効期間は? (0) 0 鍵は無期限です これで正しいですか? (y/N) y gpg: 署名に失敗しました: 秘密鍵がありません gpg: make_keysig_packet failed: 秘密鍵がありません
ssh-agentでgpg2で作成した認証鍵を使用する
以前にGnuPGで認証鍵をgithubに設定して使用できなかったことを思い出したので、ついでにその問題についても 再度調べてみたところ次の記事に行き当たった。
自分の環境では記事にある通り、次の2つの設定を行うだけで問題なくgithubにssh経由でアクセスができた。
~/.gnupg/sshcontrol
の設定- 環境変数
SSH_AUTH_SOCK
の設定
ということで無事githubへのアクセスもできるようになったので、また色々やりかけのネタに取り組んでいこうと思う。