ssh与gpg区别

您所在的位置:网站首页 gpg是什么单位 ssh与gpg区别

ssh与gpg区别

2023-05-28 11:39| 来源: 网络整理| 查看: 265

ssh与gpg区别

我们许多人都熟悉Secure Shell(SSH),它使我们可以使用密钥而不是密码连接到其他系统。 本指南将说明如何消除SSH密钥并改用GNU Privacy Guard(GPG)子密钥。

使用GPG不会使SSH连接更安全。 SSH是安全协议,SSH密钥是安全的。 相反,它使某些形式的密钥分发和备份管理更加容易。 它还不会更改使用SSH的工作流程。 所有命令将继续按您期望的方式工作,除了您将不再具有SSH私钥,而改为解锁GPG密钥。

通过GPG密钥对SSH进行身份验证,您将减少需要保护和备份的密钥文件的数量。 这意味着您的密钥管理卫生仍然必须良好,这意味着选择好的密码短语并使用适当的密钥保存策略。 请记住,您不应该将私钥备份到云中!

此外,今天SSH密钥是手工分发的,通常是直接分发的。 如果要授予我访问计算机的权限,则必须要求我提供SSH密钥。 您可能会很幸运,并在我的网站上找到了一个。 但是,您仍然必须决定是否信任我的网站。 如果我将GPG密钥用于SSH,则可以使用来自公共密钥服务器的GPG信任网为我选择一个已知的好密钥。 这就是Monkeysphere项目正在开展的工作。 否则,您在这里所做的任何事情都不会影响用于GPG加密和签名的信任网络。

什么是GPG子项?

GPG密钥实际上是密钥的集合。 有一个主密钥,通常仅用于签名和认证。 GPG建议的用法是创建一个用于加密的子项。 该子密钥是一个单独的密钥,出于所有目的和目的,该子密钥由您的主密钥签名并同时传输。 通过这种做法,您可以在保持主密钥有效的同时自行撤消加密子密钥(例如,加密子密钥遭到破坏)。

要意识到的重要一点是,一个GPG密钥包含多个密钥。 为了备份和存储,您可以将它们当作一个键来操作,但是当需要使用一个键时,可以单独使用它们。

本练习将使用为身份验证创建的子项来完成SSH连接。 该身份验证子项将完全用ssh key-gen替换您过去生成的密钥对。 如果需要多个SSH密钥,则可以根据需要创建任意多个。

创建身份验证子项

您应该已经有一个GPG密钥。 如果不这样做,请阅读与此主题相关的许多优质教程之一。 您将通过编辑现有密钥来创建子密钥。 您需要在专家模式下编辑密钥,才能访问相应的选项。

工作流添加了一个新密钥,您可以在其中选择其功能-具体来说,您希望将其功能切换为仅具有身份验证。 SSH通常使用不会过期的2048位RSA密钥(在以下选项中键入8)。

以下是工作流程的编辑版本。 该命令和所有其他命令已在Fedora 29上进行了测试。

$ gpg2 --expert --edit-key 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)    (7) DSA (set your own capabilities)    (8) RSA (set your own capabilities)   (10) ECC (sign only)   (11) ECC (set your own capabilities)   (12) ECC (encrypt only)   (13) Existing key Your selection? 8 Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: Sign Encrypt    (S) Toggle the sign capability    (E) Toggle the encrypt capability    (A) Toggle the authenticate capability    (Q) Finished Your selection? s Your selection? e Your selection? a Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: Authenticate    (S) Toggle the sign capability    (E) Toggle the encrypt capability    (A) Toggle the authenticate capability    (Q) Finished Your selection? q RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid.          0 = key does not expire        = key expires in n days       w = key expires in n weeks       m = key expires in n months       y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y Really create? (y/N) y sec  rsa2048/8715AF32191DB135      created: 2019-03-21  expires: 2021-03-20  usage: SC        trust: ultimate      validity: ultimate ssb  rsa2048/150F16909B9AA603      created: 2019-03-21  expires: 2021-03-20  usage: E   ssb  rsa2048/17E7403F18CB1123      created: 2019-03-21  expires: never       usage: A   [ultimate] (1). Brian Exelbierd gpg> quit Save changes? (y/N) y 启用GPG子项

使用SSH时,将使用一个名为ssh-agent的程序来管理密钥。 要使用GPG密钥,您将使用类似的程序gpg-agent ,该程序管理GPG密钥。 要使gpg-agent处理来自SSH的请求,您需要通过在〜/ .gnupg / gpg-agent.conf中添加enable-ssh-support行来启用支持。

$ cat .gnupg/gpg-agent.conf enable-ssh-support

(可选)您可能希望预先指定要用于SSH的密钥,这样就不必使用ssh-add来加载密钥。 为此,请在〜/ .gnupg / sshcontrol文件中指定键。 该文件中的条目是键手柄-gpg -agent用于引用键的内部标识符。 与密钥散列不同,密钥抓取既指公共密钥,也指私有密钥。 要找到按键,请使用gpg2 -K --with-keygrip ,如下所示。 然后将该行添加到sshcontrol文件中。

$ gpg2 -K --with-keygrip /home/bexelbie/.gnupg/pubring.kbx ------------------------------ sec   rsa2048 2019-03-21 [SC] [expires: 2021-03-20]       96F33EA7F4E0F7051D75FC208715AF32191DB135       Keygrip = 90E08830BC1AAD225E657AD4FBE638B3D8E50C9E uid           [ultimate] Brian Exelbierd ssb   rsa2048 2019-03-21 [E] [expires: 2021-03-20]       Keygrip = 5FA04ABEBFBC5089E50EDEB43198B4895BCA2136 ssb   rsa2048 2019-03-21 [A]       Keygrip = 7710BA0643CC022B92544181FF2EAC2A290CDC0E $ echo 7710BA0643CC022B92544181FF2EAC2A290CDC0E >> ~/.gnupg/sshcontrol

最后,您需要告诉SSH如何访问gpg-agent 。 这可以通过更改SSH_AUTH_SOCK环境变量的值来完成。 将以下两行添加到〜/ .bashrc时 ,将确保正确设置变量,并确保代理已启动并可以使用。

$ cat ~/.bashrc ... export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) gpgconf --launch gpg-agent ...

要继续,请在当前会话中执行这些命令。

分享您的SSH密钥

为了使用SSH,您需要与远程主机共享公用密钥。 您有两个选择。 首先,您可以运行ssh-add -L列出您的公钥并将其手动复制到远程主机。 您也可以使用ssh-copy-id 。 从这个角度来看,什么都没有改变。

恭喜你!

现在,您已使用GPG密钥启用SSH访问以进行身份​​验证! SSH将继续按预期运行,并且您要连接的计算机无需任何配置更改。 您减少了需要管理和安全备份的密钥文件的数量,同时使您有机会参与不同形式的密钥分发。 保持安全并保持良好的关键卫生习惯!

在下一篇文章中,我将分享一些有关如何导入现有SSH密钥的技巧,以便您可以通过GPG身份验证继续使用它们。

翻译自: https://opensource.com/article/19/4/gpg-subkeys-ssh

ssh与gpg区别



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3