【问题标题】:Confused regarding ssh keys on linux对 linux 上的 ssh 密钥感到困惑
【发布时间】:2014-03-08 04:00:39
【问题描述】:

我对在 linux 上使用私钥/公钥没有什么疑问。

假设我有两个 linux 机器 AB

我想在任何计算机上使用无密码登录 B

所以我做了这个

ssh-gen -t rsa 生成了两个文件

id_rsaid_rsa.pub

然后我将id_rsa.pub复制到B~/.ssh/A_id_rsa.pub然后

cat A_id_rsa.pub >> authorized_keys

现在我有这些问题

  1. 假设我有另一台计算机C,我也想在其中进行无密码登录,但我想使用key phrase 来保护private key。那么我可以使用 ssh-gen -t rsa 生成另一个具有不同名称的密钥并使用它,否则我必须删除以前的密钥

  2. 另一件事是无密码登录确实需要使用keysBA 或始终从AB 执行任何操作

  3. 所以private key 将始终只保留在主机上?我已经看到 AWS 提供了用于登录的私钥。那为什么会这样。因为将A 公钥放到B 有人需要访问B。这是第一次不可能。这是否意味着我们可以使用公钥或私钥登录

【问题讨论】:

    标签: linux ssh key


    【解决方案1】:
    1. 是的,您可以在 C 上生成一个密钥对并执行与 A 相同的操作:

      cat C_id_rsa.pub >> 授权密钥

    2. 密钥将只允许从 A 登录到 B。

    3. 是的,私钥将保留在主机上。我相信 AWS 在创建虚拟盒子时会自动将公钥放在计算机 B 上。

    【讨论】:

    • 我可以在附加到 authorized_keys 后删除公钥还是它需要在那里。所以这意味着除了在主机上之外,我们永远不需要私钥。如果那是真的那么为什么系统会生成它
    • 是的,你可以在授权密钥中删除公钥,但我会保留它以防你想在其他机器上重复使用它。您需要了解,公钥加密是基于任何人都可以知道公钥这一事实,但只有在知道私钥的情况下才有用。由于只有计算机 A 知道私钥,因此即使其他计算机拥有公钥,也只有计算机 A 能够与计算机 B 通信。为了安全通信,私钥必须保密,因此称为“私钥”。
    • 所以这意味着如果我将计算机A的私钥复制到C,那么C可以与B通信?我也可以在 .ssh 文件夹中拥有任意名称的任意数量的键。但是系统如何知道哪个私钥对应哪个公钥
    • 是的,确实如此,但这样做有危险。首先,您需要确保使用安全通道(如 ssh 或使用闪存驱动器)将私钥复制到计算机 C,切勿通过电子邮件发送,否则密钥可能会被泄露。其次,如果您也开始将私钥传播到其他计算机,那么如果该密钥在一台机器上被泄露,您需要更换所有机器上的密钥。
    • 一个好的做法是,正如您在原始帖子中提到的那样,使用密码短语加密私钥本身。这为您的密钥增加了另一层安全性并减轻了攻击。
    【解决方案2】:

    在一两行中:

    密钥有点像(非常粗略):您需要公钥来解密由私钥加密的内容,反之亦然。更准确地说,http://en.wikipedia.org/wiki/Public-key_cryptography 有更好的信息可供开始。

    所以回答问题:私钥通常不绑定到计算机。您可以将私钥从 A 复制到 C,然后从 C 使用它登录。

    您可以在单个主机上生成多个密钥,每组主机一个密钥对。同样,您可以从多个主机生成密钥,每个主机将其密钥发布到目标计算机(本例中为 B)的“authorized_keys”文件。

    理想情况下,私钥应尽可能保密。虽然 SSH 或密钥管理不会强制将密钥放在一台计算机上,但作为最佳实践,它应该仅限于单个系统。话虽如此,据我所知,实际上没有什么可以阻止复制私钥,例如备份或迁移到新系统。换句话说,私钥文件就像密码一样,任何系统都可以使用它来登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2011-02-27
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多