回答:
私はこれが古い投稿であることを知っていますが、私のような人々にとってはこれにつまずく:
(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キーを介して追加しようとしている人々を読んだことがあります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キーを保護するための追加の手段として使用する必要があるようです。
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トークンとの通信に使用する-I
PKCS#11共有ライブラリを指定するオプションがありますssh
。
ssh-keygen
RFC4716 / SSH2公開鍵または秘密鍵、PEM PKCS8公開鍵、およびPEM公開鍵を使用して、-i
および-m
オプションを使用してOpenSSH互換の秘密(または公開)鍵を生成できます。
それでも、すべてをまとめる方法を見つけることはできません。
gpgkey2ssh
置き換えられていることに注意してください--export-ssh-key
。これを実現するのに時間がかかりました。使用法はgpg --export-ssh-key BFB2E5E3
です。
いいえ、交換できません。はい、GPGキーを認証に使用できます。Monkeysphereパッケージには、GPG証明書から生のRSAキーペアを抽出するツールがあります。
GPG証明書には、「認証」機能フラグ付きのサブキーが必要です。このようなサブキーを作成するには、1回実行します。
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に追加できます(これも--enable-ssh-supportオプションでgpg-agentを起動した後)。
monkeysphereを使用してGNOMEキーリング(または通常のssh-agent)を使用することもできます。この場合の唯一の問題は、再度ログオンするときに(GnomeまたはXFCEに)キーを再度追加する必要があることです。これを解決するには、キーを手動でエクスポートして変換します。