RSA
でGPG
キーを生成し、SSH
ログインで使用したい。これは可能ですか?もしそうなら、どうですか?
編集:@wwernerの回答を参照してください、私は試していませんが、それは現在の解決策のようです(2018年現在)
私はこれが古い記事であることを知っていますが、私のような人々にとってこれにつまずきます:
(gpg 2.1以降)gpgを使用して直接sshキーを抽出することが可能になりました:gpg --export-ssh-key <key id>!
。
!
マークはオプションです。これにより、主キーがエクスポート可能になり、キーが認証可能かどうか([CA])かどうかのチェックが省略されます。
詳細:
私はこのトピックについていくつかの調査を行っており、いくつかヒントを与えることができますが、それを機能させる方法はまだ見つかりません。
Monkeysphere は非常に興味深いプロジェクトのようですが、MacPortsを使用して空き容量を少しでも詰まらせずにMac OS Xでコンパイルすることはできませんでした。
最初に試すことをお勧めする方法は、キー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
には、よく知られている--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 manpage はこう言っています:
エージェントを介して使用されるSSHキーは、最初にssh-addユーティリティを介してgpg-agentに追加する必要があります。キーが追加されると、ssh-addは提供されたキーファイルのパスワードを要求し、保護されていないキーマテリアルをエージェントに送信します。これにより、gpg-agentはパスフレーズを要求します。これは、新しく受信したキーを暗号化してgpg-agent固有のディレクトリに保存するために使用されます。
したがって、gpg-agent
は、GPG暗号化でSSHキーを保護するための追加の手段として使用する必要があるようです。
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互換の秘密(または公開)鍵を生成できます。
それでも、すべてをまとめる方法が見つかりません。
いいえ、互換性はありません。はい、認証にGPGキーを使用することが可能です。Monkeysphereパッケージには、GPG証明書から未加工のRSAキーペアを抽出するツールが含まれています。
GPG証明書には、「認証」機能フラグを持つサブキーが必要です。そのようなサブキーを作成するには、一度実行します。
monkeysphere g
次に、認証サブキーをssh-agentに追加します。
monkeysphere s
ある程度関連: このgnupg-usersスレッド 。
この質問の回答と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に追加できます(これも、gpg-agentを--enable-ssh-supportオプションで起動した後)。
Monkeysphereを利用してGNOMEキーリング(または通常のssh-agent)を使用することもできます。この場合の唯一の問題は、再度(GnomeまたはXFCEに)ログオンするときにキーを再度追加する必要があることです。これを解決するには、手動でキーをエクスポートして変換します。