web-dev-qa-db-ja.com

リモートサーバーでGnuPGを介してYubiKeyを使用する方法

YubiKeyを使用して、たとえばサーバーのGnuPGキーをロック解除できるかどうか疑問に思っているので、生成されたトークンをSSH経由でYubiKeyからサーバーに簡単な方法で渡せますか?

6
Ragadabing

GnuPGはYubikeyによって生成されたトークンを利用しませんが、スティックは代わりにOpenPGPスマートカードプロトコルを実装します。キーはYubiKeyに保存され、YubiKeyはすべての公開/秘密キー暗号化操作を実行します。特別な保護は、キーがYubiKeyを離れることができないという事実に基づいているため、攻撃者は(一時的に、ロックされていないスティックにアクセスできる限り)キーを使用できますが、完全に保持することはできません。 。

GnuPGには エージェント転送 と呼ばれる機能があります。それは主にgpg-agent特定の操作にのみ使用される特別な追加ソケットを提供するには:

extra-socket /home/<user>/.gnupg/S.gpg-agent.extra

次に、ソケット上のすべての通信をリモートサーバーに転送するようにSSHを構成します。

RemoteForward /home/<user>/.gnupg/S.gpg-agent /home/<user>/.gnupg/S.gpg-agent.extra

上記のリンク先のWikiページで、ニッチに関するいくつかのヒントを含む詳細な説明を参照できます。

9
Jens Erat

GnuPGまたはLinuxディストリビューションの新しいバージョンでは、ソケットのパスを変更できます。これらはを介して見つけることができます

$ gpgconf --list-dirs agent-extra-socket

そして

$ gpgconf --list-dirs agent-socket

次に、これらのパスをSSH構成に追加します。

Host remote
  RemoteForward <remote socket> <local socket>

公開鍵をコピーするための簡単なソリューション:

scp .gnupg/pubring.kbx remote:~/.gnupg/

リモートマシンで、GPGエージェントをアクティブ化します。

echo use-agent >> ~/.gnupg/gpg.conf

リモートマシンで、SSHサーバー構成も変更し、このパラメーター(/ etc/ssh/sshd_config)を追加します。

StreamLocalBindUnlink yes

SSHサーバーを再起動し、リモートマシンに再接続します-動作するはずです。

いくつかのトラブルシューティングを含むより詳細なチュートリアルが見つかります Matthias Lohrによるブログ投稿

1
Matthias Lohr