gnupg – GPG と SSH 鍵は互換性があるのか?

gnupg private-key public-key ssh

RSAのキーをGPGで生成して、SSHのログインで使いたい。これは可能でしょうか?可能であれば、どのようにして?

edit: @wwernerさんの回答を見て、私は試していませんが、現在の解決策(2018年現在)のようです

  79  None  2011-11-23


ベストアンサー

古い投稿ですが、私のように躓いている人のために

(gpg 2.1 以降では) gpg を使って直接 ssh の鍵を簡単に抽出できるようになりました。gpg --export-ssh-key <key id>!

!マークはオプションで、主鍵をエクスポート可能にし、鍵が認証可能かどうかのチェックを省略します([CA])

Details:

38  wwerner  2018-01-17


この話題について調べているのですが、ヒントをあげることはできるのですが、まだ方法が見つかっていません

Monkeysphere

Monkeysphere は非常に興味深いプロジェクトのようですが、Mac OS X でコンパイルしても、MacPorts で私の小さな空きディスクスペースを詰まらせることなくコンパイルすることができませんでした

Using 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

Using gpg-agent

gpg-agentには、よく知られているssh-agentの代わりにドロップインする--enable-ssh-supportというオプションがあります。この方法でgpg-agentを起動した後、ssh-add経由で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 manpageに書いてあります

エージェントを通して使用される SSH 鍵は、ssh-add ユーティリティを通して最初に gpg-agent に追加する必要があります。鍵が追加されると、ssh-add は提供された鍵ファイルのパスワードを要求し、保護されていない鍵をエージェントに送ります; これにより gpg-agent はパスフレーズを要求します

ということで、gpg-agentを追加対策としてGPG暗号化でSSH鍵を保護する必要があるようです

GPG キーを OpenSSH に変換します

Jérôme Pouiller は ブログ で、Gpgsm ユーティリティは PCSC12 の鍵と証明書をエクスポートすることができると書いています

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 トークンとの通信に使うべき PKCS#11 トークンを指定することができます。ssh-keygen は、RFC4716/SSH2 公開鍵や秘密鍵、PEM PKCS8 公開鍵、PEM 公開鍵を使って、-i および -m オプションを使って OpenSSH 互換の秘密鍵 (または公開鍵) を生成することができます

それでもまとめ方がわからない

31  Claudio Floreani  2012-02-15


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

  1. GPG 証明書には、「認証」能力フラグを持つサブキーが必要です。このようなサブキーを作成するには、一度実行してください

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

    monkeysphere s
    

多少関連性があります。この gnupg-users スレッド

14  user1686  2011-11-23


この質問への回答と gnupg-users メーリングリストの助けを借りて、私は自分の GPG 鍵を SSH 認証に使う方法を見つけることができました。Claudio Floreani さんが回答の中で既に述べているように、これを行うにはいくつかの方法が考えられます

いくつか考えられる解決策をブログ記事にしてみました。http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

要約すると現在ベータ版の GnuPG 2.1 を使っているか。このバージョンを使う場合は、gpg-agent を –enable-ssh-support オプションで起動し、GPG キー (またはサブキー) の keygrip を ~/.gnupg/sshcontrol に追加するだけです

現在の安定版 GnuPG (2.0.x) を使用している場合、monkeysphere を使って gpg-agent に鍵を追加することができます (gpg-agent を –enable-ssh-support オプションで起動した後、再度)

monkeysphere の助けを借りて GNOME keyring (あるいは通常の ssh-agent) を使うことも可能です。この場合の唯一の問題は、 (Gnome や XFCE に) 再度ログオンするときに鍵を追加しなければならないことです。これを解決するには、手動で鍵をエクスポートして変換することができます

9  jeroen  2012-08-02


タイトルとURLをコピーしました