web-dev-qa-db-ja.com

gpgとSSHを一緒に使用するには?

重複の可能性:
GPGとSSHキーは交換可能ですか?

GpgとSSHを一緒に使用するには?

私は1)gpgを使用してテキストファイルを暗号化および復号化し、2)SSHキーを生成してパスワードなしでリモートサーバーにアクセスする基本的な手順を知っています。

2つは統合できるのかしら。この2つは無関係であり、日常の使用では分離する必要がありますか?

11
qazwsx

私はこのトピックについていくつかの調査を行っており、いくつかのヒントを与えることができますが、それを機能させる方法はまだ見つかりません。

モンキースフィア

Monkeysphere は非常に興味深いプロジェクトのようですが、MacPortsを使用して空き容量を少しでも詰まらせずにMac OS Xでコンパイルすることはできませんでした。

Gpgkey2sshの使用

試してみることをお勧めする最初の方法は、キーID(BFB2E5E3など)から互換性のあるauthorized_keysエントリを次のように生成することです。

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

ここでは、テスト目的でsshサーバーを実行したため、これをローカルホストに追加しましたが、もちろん、これをターゲットホスト~/.ssh/authorized_keysに追加する必要があります。次に、認証中にこのキーのプライベート部分を使用するようにSSHに指示する必要がありますが、ASCIIアーマーバージョンのキーペアをエクスポートするだけでは機能しません:

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

Gpg-agentの使用

gpg-agentには、よく知られている--enable-ssh-supportのドロップイン置換として使用できるssh-agentオプションがあります。この方法でssh-addを起動した後、gpg-agentを介してGPGキーを追加しようとしている人のことを読んだことがあります。

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

しかし、これがうまくいくとは思いません。 gpg-agentのマンページ は次のように述べています。

エージェントを介して使用されるSSHキーは、最初にssh-addユーティリティを介してgpg-agentに追加する必要があります。キーが追加されると、ssh-addは提供されたキーファイルのパスワードを要求し、保護されていないキー素材をエージェントに送信します。これにより、gpg-agentはパスフレーズを要求します。パスフレーズは、新しく受信したキーを暗号化し、gpg-agent固有のディレクトリに保存するために使用されます。

したがって、GPG暗号化でSSHキーを保護するための追加の手段としてgpg-agentを使用する必要があるようです。

GPGキーをOpenSSHに変換する

JérômePouillerの blog は、GpgsmユーティリティがPCSC12でキーと証明書をエクスポートできると書いています。その後、OpenSSHで使用できます。

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

しかし、gpgsmにgpgキーペアを受け入れさせる方法が見つかりませんでした。

あなたが試すことができる他のこと

SSHには-Iオプションがあり、PKCS#11共有ライブラリを指定します。sshは、ユーザーのプライベートRSAキーを提供するPKCS#11トークンとの通信に使用する必要があります。 ssh-keygenは、RFC4716/SSH2公開鍵または秘密鍵、PEM PKCS8公開鍵、およびPEM公開鍵を使用して、-iおよび-mオプションを使用するOpenSSH互換の秘密(または公開)鍵を生成できます。

それでも私はそれをすべて組み合わせる方法を見つけることができません。

7

技術的にはそうです。PGPキーはSSH認証に使用できます。人々が「PGP鍵」と呼ぶものは、証明書のメタデータとともに通常のRSA、ECDSAまたはその他の鍵ペア(主鍵とサブ鍵)を含むcertificateに似ています。実際、「認証」使用フラグも定義されています。

ただし、複数の目的で同じキーを使用することはお勧めしません。ただし、認証のみのサブキーをPGP証明書に(gpg --expert --edit-keyを介して)簡単に追加できるため、これは簡単に解決できます。 1つの署名/認証主キー、暗号化サブキー、および認証サブキーがあります。

しかし実際には、PGP鍵を使用して直接認証するために、howを理解することはできませんでしたが、いくつかのアイデアを試すのが面倒でした。 Monkeysphereスイートには、GPG認証サブキーをssh-agentに追加するツールがあります。シンプルなはずです。しかし、これには古いスーパーユーザーの投稿がいくつかあるはずです。

2
user1686