SSH:安全的客户端主机专用RSA密钥?

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

典型的过程是在客户端上生成公钥/私钥对,然后将客户端的公钥添加到服务器上的authorized_keys列表中( http://www.linuxproblem.org/art_9.html )。 使用这种方法,如果您有多台客户端计算机,则每个客户端计算机都必须连接到authorized_keys列表并保持一段时间。

恭喜,你已经find了一个错误的build议互联网教程。

任何一台计算机遭到入侵时,多台计算机使用单个密钥对就会出现问题。 然后,你别无select,只能撤销密钥对并重新键入使用该密钥对的每台计算机。 每台机器和每个用户应始终使用唯一的密钥对,以限制受损密钥可能造成的损害。

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

可能的确有些情况下,您想要集中pipe理用户的身份密钥,例如自动脚本,但在这种情况下,您应该从第三方主机或理想情况下从configurationpipe理系统(如puppet)执行此操作。

本教程中描述的协议最大的问题在于它没有指定如何以安全的方式(即防止窃听)“将私钥下载到客户端机器”。 如果你还没有一个安全的通道,那么这个密钥可能会在互联网上传输(HTTP,FTP,电子邮件等)。 你可以使用HTTPS,但是如果你没有真正的证书,可以用MITM来嗅探密钥。 只要按照你应该的方式去做; 在客户机上生成密钥对,把公钥传给服务器,不要忘了validation文件的校验和,以确保在传输过程中没有修改。