SSH と GPG の違いについて

Gemini に聞いてまとめてもらった。

項目 SSH (Secure Shell) GPG (GNU Privacy Guard)
主な目的 通信経路の暗号化・認証 データ自体の暗号化・署名
主な用途 サーバーへのリモートログイン、ファイル転送 メールの暗号化、ファイルの保護、電子署名
通信の状態 リアルタイム(接続している間だけ有効) 非同期(保存されたファイルなどに有効)
信頼モデル サーバーのホスト鍵を確認(TOFU方式) Web of Trust(信頼の輪)や直接確認
規格 SSH2 プロトコル OpenPGP 規格

SSH で署名可能

ちなみに2021年11月に Git 2.34 において署名フォーマットとして GPG だけでなく SSH を指定できる機能(gpg.format = ssh)が追加された。

SSH鍵の方が扱いが慣れているし、楽なのは間違いない。

方式 立ち位置
SSH 現在の推奨(ベストプラクティス)。設定が最も簡単で、ほとんどの人に最適。
GPG 伝統的な方式。古いシステムとの互換性や、Web of Trust を利用したい場合に。
S/MIME 企業の証明書発行機関(CA)を利用する場合など、組織的な管理が必要な場合に。

ちなみに Authentication Key, Signing Key を同じものを使うことも可能なようだが、セキュリティの観点で別の鍵を用意したほうが安全だろう。