SSH:客户端托管RSA私钥是否安全?


10

在服务器上生成公用/专用密钥对,将公用密钥添加到authorized_keys列表中,然后将专用密钥复制到每个客户端是否安全,如此处所述(http://www.rebol.com/docs/ ssh-auto-login.html),假设您对每个客户端都拥有永久控制权?(即同一用户,许多计算机)。

典型的过程是在客户端上生成公用/专用密钥对,然后按照此处所述(http://www.linuxproblem.org/art_9.html)将客户端的公用密钥添加到服务器上的authorized_keys列表中。使用此方法,如果您有多台客户端计算机,则每台客户端计算机都必须连接到authorized_keys列表中,并随时间进行维护。

Answers:


22

恭喜,您找到了一个带有不良建议的Internet教程。

任何一台计算机受到威胁时,就会出现在多台计算机上使用单个密钥对的问题。然后,您别无选择,只能在各处撤消密钥对并对每台使用该密钥对的计算机重新密钥。您应该始终为每台计算机和每位用户使用唯一的密钥对,以限制损坏的密钥可能造成的损害。

对于该教程,在服务器上生成密钥对并将私钥复制到客户端是非常糟糕的建议。这是完全落后的。而是应在客户端上生成密钥对,并将公共密钥复制到服务器。甚至有一个帮助程序脚本就ssh-copy-id可以做到这一点,并一路确保所有权限都正确,客户端获取服务器的主机密钥,等等。

确实确实存在您想要集中管理用户身份密钥的情况,例如针对自动化脚本,但是在这种情况下,您确实应该从第三台主机,或者理想情况下从配置管理系统(如puppet)执行此操作。


2
此外,客户端计算机的用户必须记住该特定密钥不能安全地用于任何其他目的,因为您不知道私有密钥在哪里。如果您知道密钥是在客户端上生成的,并且从未离开过客户端,那么通常可以使用同一密钥登录不同的系统。
卡巴斯德,2015年

7
我想到了一个共用针头的类比,但是我真的不确定我想走那么远……
Michael Hampton

不确定如何将非对称部分纳入类推。
kasperd 2015年

1
好吧...取决于您在针的哪一端。
Mircea Vutcovici 2015年

3

该教程中描述的协议的最大问题是,它没有指定如何以安全的方式“将私钥下载到客户端计算机”(即,防止窃听)。如果您还没有安全通道,则可能会通过Internet(HTTP,FTP,电子邮件等)以明文方式传输密钥。您可以使用HTTPS,但是如果您没有真实的证书,则可以通过MITM来嗅探密钥。按照您应该做的方式进行操作;在客户端计算机上生成密钥对,将公钥传输到服务器,并且不要忘记验证文件的校验和以确保在传输中未对其进行修改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.