重複の可能性:
GPGキーとSSHキーは交換可能ですか?
gpgとSSHを一緒に使用する方法は?
1)gpgを使用してテキストファイルを暗号化および復号化する2)SSH鍵を生成および使用してパスワードなしでリモートサーバーにアクセスする基本手順を知っています。
この2つを統合できるのだろうか。この2つは無関係であり、日常の使用で分離する必要がありますか?
重複の可能性:
GPGキーとSSHキーは交換可能ですか?
gpgとSSHを一緒に使用する方法は?
1)gpgを使用してテキストファイルを暗号化および復号化する2)SSH鍵を生成および使用してパスワードなしでリモートサーバーにアクセスする基本手順を知っています。
この2つを統合できるのだろうか。この2つは無関係であり、日常の使用で分離する必要がありますか?
回答:
私はこのトピックについていくつかの研究を行っており、いくつかのヒントを与えることができますが、私はまだそれを機能させる方法を見つけていません。
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互換の秘密(または公開)キーを生成できます。
それでも、私はそれをすべてまとめる方法を見つけることができません。
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
。tee
出力を確認できるように使用していますか?このコマンドの出力は、ssh-add
; による使用には適していません。生成されたid_rsa
ファイルは、ssh-agent
またはのいずれにもロードできません。またgpg-agent
、によって直接使用することもできませんssh
。
技術的には、PGPキーをSSH認証に使用できます。どのような人々は、「PGPキー」と呼ぶことはそれ以上である証明書、証明書のメタデータとともに通常のRSA、ECDSAまたはその他の鍵ペア(主キーとサブキー)を含みます、。実際、「認証」使用フラグも定義されています。
ただし、複数の目的に同じキーを使用することはお勧めしません。ただし、認証専用のサブキーをPGP証明書に(を介してgpg --expert --edit-key
)簡単に追加できるため、これは簡単に解決できます。1つの署名/認証プライマリキー、暗号化サブキー、および認証サブキーがあります。
しかし実際には、PGPキーを直接使用して認証する方法を理解することはできませんでしたが、いくつかのアイデアを試すにはあまりにも面倒でした。Monkeysphereスイートには、GPG認証サブキーをssh-agentに追加するツールがありますが、これは簡単なはずです。しかし、これに関する古いスーパーユーザーの投稿がいくつかあるはずです。
monkeysphere subkey-to-ssh-agent
キーをエージェントにロードします。
flag
、同じ質問を2回投稿するのではなく、質問の下のリンクを使用して重複としてフラグを立てることができます。しかし、詳細な対応に感謝します!