gpgとSSHを一緒に使用する方法は?[複製]


11

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

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

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

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

回答:


7

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

モンキースフィア

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キーを介して追加しようとしている人々を読んだことがありますgpg-agent

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-エージェントのmanページは言います:

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

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

GPGキーをOpenSSHに変換する

JérômePouillerは彼のブログで、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

しかし、私はgpgsmgpgキーペアを受け入れる方法を見つけていません。

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

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

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


1
後で参照するために、本質的に同一の2つの質問を見つけた場合flag、同じ質問を2回投稿するのではなく、質問の下のリンクを使用して重複としてフラグを立てることができます。しかし、詳細な対応に感謝します!
-nhinkle

申し訳ありませんが、この機能については知りません。ありがとう
クラウディオフロレアーニ

2
あなたが何を達成しようとしているのか分からないgpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsatee出力を確認できるように使用していますか?このコマンドの出力は、ssh-add; による使用には適していません。生成されたid_rsaファイルは、ssh-agentまたはのいずれにもロードできません。またgpg-agent、によって直接使用することもできませんssh
ラースク


2

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

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

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


情報のおかげで。これらは有用ですが、私の質問に答えるには十分ではありません。PGP証明書とSSHキーを統合する方法はまだわかりません。
qazwsx

Monkeysphere docsから。monkeysphere subkey-to-ssh-agentキーをエージェントにロードします。
user1686
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.