RSA
のキーをGPG
で生成して、SSH
のログインで使いたい。これは可能でしょうか?可能であれば、どのようにして?
edit: @wwernerさんの回答を見て、私は試していませんが、現在の解決策(2018年現在)のようです
79 None 2011-11-23
古い投稿ですが、私のように躓いている人のために
(gpg 2.1 以降では) gpg を使って直接 ssh の鍵を簡単に抽出できるようになりました。gpg --export-ssh-key <key id>!
!
マークはオプションで、主鍵をエクスポート可能にし、鍵が認証可能かどうかのチェックを省略します([CA])
Details:
- https://www.gnupg.org/faq/whats-new-in-2.1.html#sshexport
- https://lists.gnupg.org/pipermail/gnupg-devel/2016-January/030682.html
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 鍵ペアを抽出するツールがあります
GPG 証明書には、「認証」能力フラグを持つサブキーが必要です。このようなサブキーを作成するには、一度実行してください
monkeysphere g
次に、認証サブキーを 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