Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于linux上的ssh密钥_Linux_Ssh_Key - Fatal编程技术网

关于linux上的ssh密钥

关于linux上的ssh密钥,linux,ssh,key,Linux,Ssh,Key,对于在linux上使用私钥/公钥,我没有什么疑问 假设我有两个linux框A和B 我想从任何计算机使用无密码登录到B 于是我就这么做了 ssh gen-t rsa并生成了两个文件 id\u rsa和id\u rsa.pub 然后我将id\u rsa.pub复制到B~/.ssh/A\u id\u rsa.pub,然后 cat A\u id\u rsa.pub>>授权密钥 现在我有这些问题 假设我有另一台计算机C,其中我还想进行无密码登录,但我想使用密钥短语来保护私钥。因此,我是否可以使用不同名称的

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

假设我有两个linux框
A
B

我想从任何计算机使用无密码登录到
B

于是我就这么做了

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

id\u rsa
id\u rsa.pub

然后我将
id\u rsa.pub
复制到
B
~/.ssh/A\u id\u rsa.pub
,然后

cat A\u id\u rsa.pub>>授权密钥

现在我有这些问题

  • 假设我有另一台计算机
    C
    ,其中我还想进行无密码登录,但我想使用
    密钥短语
    来保护
    私钥
    。因此,我是否可以使用不同名称的ssh gen-t rsa生成另一个密钥并使用该密钥,或者我必须删除以前的密钥

  • 另一件事是,对于无密码登录,确实需要使用
    B
    A
    或始终从
    A
    B

  • 因此,
    私钥
    将始终仅保留在主机上?我看到AWS提供了用于登录的私钥。那为什么呢。B用于将
    A
    公钥放入
    B
    某人需要访问
    B
    。这在第一次是不可能的。那么这是否意味着我们可以使用公钥或私钥登录

  • 是的,您可以在C上生成密钥对,并执行与a相同的操作:

    cat C_id_rsa.pub>>授权密钥

  • 这些密钥只允许从A登录到B

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


  • 在一两行中:

    密钥的工作原理类似(非常粗略):您需要公钥来解密由私钥加密的内容,反之亦然。更准确地说,我们有更好的信息开始

    所以要回答这些问题:私钥通常不会绑定到计算机。您可以将私钥从(比如)A复制到C,并可以使用它从C登录

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


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

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