GPGキーとSSHキーは交換可能ですか?


70

RSAキーを生成GPGし、SSHログインで使用したい。これも可能ですか?もしそうなら、どのように?

編集:@wwernerの答えを参照してください、私はそれを試しませんでしたが、それは現在の解決策のようです(2018年現在)

回答:


26

私はこれが古い投稿であることを知っていますが、私のような人々にとってはこれにつまずく:

(gpg 2.1以降)gpg:を使用してsshキーを直接抽出することが可能になりました gpg --export-ssh-key <key id>!

!マークはオプションで、それがエクスポート主キーを行い、キーが認証できる([CA])であるか否かをチェック省略する。

詳細:


この答えは受け入れられるべきです。:)
インケリッツ

30

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

モンキースフィア

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

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

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

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

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


5
バージョン2.1.11(2016-01-26)でgpgkey2ssh置き換えられていることに注意してください--export-ssh-key。これを実現するのに時間がかかりました。使用法はgpg --export-ssh-key BFB2E5E3です。
MayeulC


Linodeには良い投稿がありますが、彼らはgpg-agentを使用してSSHで認証しました。gpg秘密鍵をSSH秘密鍵に変換しません。
-Xorax

14

いいえ、交換できません。はい、GPGキーを認証に使用できます。Monkeysphereパッケージには、GPG証明書から生のRSAキーペアを抽出するツールがあります。

  1. GPG証明書には、「認証」機能フラグ付きのサブキーが必要です。このようなサブキーを作成するには、1回実行します。

    monkeysphere g
    
  2. 次に、認証サブキーをssh-agentに追加します。

    monkeysphere s
    

やや関連性:このgnupg-usersスレッド


9

この質問に対する回答からの情報とgnupg-usersメーリングリストの助けを借りて、GPGキーをSSH認証に使用する方法を見つけ出すことができました。Claudio Floreaniの答えで既に述べたように、これを行うにはいくつかの方法があります。

私はいくつかの可能な解決策に関するブログ投稿を書いています:http ://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

要約すると、現在ベータ版であるGnuPG 2.1を使用します。このバージョンを使用する場合、単に--enable-ssh-supportオプションでgpg-agentを起動し、GPGキー(またはサブキー)のキーグリップを〜/ .gnupg / sshcontrolに追加できます。

現在の安定したGnuPGバージョン(2.0.x)を使用している場合、monkeysphereを使用してキーをgpg-agentに追加できます(これも--enable-ssh-supportオプションでgpg-agentを起動した後)。

monkeysphereを使用してGNOMEキーリング(または通常のssh-agent)を使用することもできます。この場合の唯一の問題は、再度ログオンするときに(GnomeまたはXFCEに)キーを再度追加する必要があることです。これを解決するには、キーを手動でエクスポートして変換します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.