【令和最新版】sshcontrolは使わないで!最近のGPGによるSSH認証のベストプラクティス
はじめに
GnuPGユーザーがGPG鍵をSSH認証にも使おうとしたら、今までは、`sshcontrol` を`gpg-agent`に渡すという、記事やブログの内容がほとんどだと思いますし、ChatGPTやLLMを使ったボットなどもこの内容を案内していますが、いつ からか、この`sshcontrol`を使う方法は非推奨になっていました。
const hello = "world!";
> This file is deprecated in favor of the "Use-for-ssh" attribute in the key files.
> (§ sshcontrol https://www.gnupg.org/documentation/manuals/gnupg/Agent-Configuration.html )
ここでは、それらの変更に対応した新しい?方法を示します。日本語でこれが解説されてあるのはGentoo LinuxのGnuPGのwikiぐらいでしょうか。
前提
すでにsshcontrolがあっても無くてもかまいません。
- GnuPG がインストールされている
- すでに秘密鍵や公開鍵をGPGが読みこんでいる
- GPG でSSH 接続したい先に同じ公開鍵がある
準備
SSH接続したいGPG鍵のKeygripを確認してください
方法1 gpg コマンドを使う
鍵のIDや副鍵なども全て見る場合
gpg --list-secret-keys --keyid-format long --with-keygrip
鍵のIDは見なくても良い場合
gpg -k --with-keygrip
いずれにせよ、 --with-keygrip は必要ですね。
方法2 gpg-connect-agent を使う
gpg-connect-agent 'keyinfo --list' /bye
セットアップ
ssh認証にgpg-agentが関われるようにする
シェルの設定を行います。この手順自体はsshcontrol を使われていた方なら設定をしなくても良いはずです。
gpg-agentにSSH接続に使って良い鍵を教える
gpg-connect-agent 'keyattr
設定できたか確認する
gpg-connect-agent 'keyattr <登録したKEYGRIP> Use-for-ssh: ' /bye
と入力して、
D true
と出たらセットアップ終了です。
これで終了です!お疲れさまでした。
sshcontrol から移行するには
sshcontrol には、鍵のKeygripが書かれているはずなので、それを一行ずつ上の手順を実行すれば良いはずです。
スクリプトを組んでもいいでしょう。
トラブルシューティング
ssh -T [email protected]
に接続して、公開鍵の認証が出来ない場合は、シェルの設定の内容をもう一度確認したり、シェルからインタープリタ的に設定した後、シェルを閉じないでそのまま接続を行ってください。
また、以下のようなリセットコマンドもあります。
gpg-connect-agent reloadagent /bye
gpg-connect-agent updatestartuptty /bye
どちらも OK と帰ってきたらリセット完了です。
おわりに
お読みいただきありがとうございました。近日中に、GPGにゼロから入門し、さらにSSH鍵など、様々な応用までカバーするための記事を公開する予定です。