簡體   English   中英

如何使用 ssh 公鑰進行 gpg 加密?

[英]How to gpg encrypt with ssh public key?

我在名為key.pub的文件中有一個key.pub ,其內容如下所示:

ssh-rsa AAAAB...<snip>...t+f klahnakoski

我想用它來加密帶有gpg的文件。 所需的 shell 命令序列是什么?

我想序列看起來像:

  • 將密鑰轉換為 gpg 友好格式
  • 發明一些憑據來簽署密鑰
  • 發明一個用戶以方便將密鑰添加到密鑰環
  • 執行加密

謝謝!

RSA 密鑰只能用於加密其密鑰長度的一部分。 例如,一個 2048 位的 RSA 密鑰只能用於加密大約 245 個字節。

看:

https://security.stackexchange.com/questions/33434/rsa-maximum-bytes-to-encrypt-comparison-to-aes-in-terms-of-security

因此,要加密/解密大量數據(文件),您將使用使用公鑰加密的對稱密鑰,而不是公鑰本身。

此外,您不會向公共SSH 密鑰添加對稱密鑰,因為對稱密鑰是秘密,而公共 SSH 密鑰不是秘密 對稱密鑰應添加到私有SSH 密鑰中。

它類似於以下內容:

要轉換文件格式,請安裝monkeysphere 工具集(Ubuntu)

sudo apt-get install monkeysphere

使用 pem2openpgp 工具將私鑰轉換為 gpg 格式。 管道到 gpg 進行導入。

pem2openpgp userid-ssh@example.com < id_rsa | gpg --import

# Check it's there
gpg --list-secret-keys

編輯您在密鑰中的信任級別。

gpg --edit-key userid-ssh@example.com
gpg> trust

添加您需要的信任級別(例如終極)

導入的密鑰僅適用於創建證書,不適用於簽名或加密。

加密

該密鑰是 RSA 密鑰,不能用於加密/解密大量數據。 如果你想這樣做,你必須添加一個對稱加密子密鑰。 加密時,GPG 將使用此子密鑰而不是原始 SSH 密鑰。

gpg> addkey
Please select what kind of key you want:
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
Your selection? 6

現在您可以使用基於SSH 密鑰的身份進行加密和解密。

gpg -vv -r userid-ssh@example.com -e -a unencrypted_file.txt

那么這有多大用處呢?

嗯,使用 GPG 生成和管理您的 SSH 密鑰作為身份驗證子密鑰比嘗試相反的方法更有意義。 事實上,它可以集成到 SSH 而不是 ssh-agent。

ssh-vault可能會給你一些想法,它遵循與 PGP 相同的原則,只使用公共 ssh 密鑰來加密密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM