致力于为 SSH 设置 GnuPG 密钥管理器,现在在 CentOS 6 上设置 FreeNX 服务器,在新安装的 ArchLinux 上设置 NoMachine NXclient,我阅读的有关密钥的内容比我以前阅读的要多。我的水平是“邮政类比”来自维基百科。因此,私钥保留在原始系统上,而公钥是共享的,这是完全合理的。并且这个消息一次又一次地重复:
“生成密钥对后,您需要将公钥复制到远程服务器 [...] 请注意,私钥不会共享并保留在本地计算机上。”
然而,设置 NX 的说明来自 CentOS 的 FreeNX 设置页面(向下滚动):“您需要通过 ssh 进入服务器 [...] 复制所有文本(包括 BEGIN DSA PRIVATE KEY 和 END DSA PRIVATE KEY 行。”
从 NoMachine 的设置页面:“将文件中新生成的一对密钥中的私钥分发给所有必须被授予访问特定 NX 服务器主机权限的客户端。”
客户端当然可以生成自己的私钥。
编辑:并且......在尝试考虑以下评论后,我重新配置了 nx 用户。要求(我期望的)公钥的身份验证失败是怎么回事?
NX> 203 NXSSH running with pid: 4523
NX> 285 Enabling check on switch command
NX> 285 Enabling skip of SSH config files
NX> 285 Setting the preferred NX options
NX> 200 Connected to address: 192.168.2.8 on port: 22
NX> 202 Authenticating user: nx
**NX> 208 Using auth method: publickey**
NX> 204 Authentication failed.
答案1
服务器也需要它自己的私钥,因为通信是双向的。它并不是全部使用客户端的公钥加密——只是一些东西从服务器到客户端就是这样完成的。
原因很明显:如果客户端使用自己的公钥对其传输进行加密,则服务器将需要相应的私钥才能对其进行解密。这违背了“私钥”的意义。如果服务器没有客户端的私钥,则它无法解密使用客户端的公钥发出的消息。
相反,服务器向客户端发送公钥,客户端使用该公钥来加密发送给服务器的消息。所以服务器需要它自己的公钥/私钥对——大概是一个完全不同一对比客户使用的一对。
客户端将其私钥保密。
服务器将其私钥保密。
它们不是同一把钥匙。
合理?请注意,这意味着任何一方都无法解密其发送的消息;只有消息的接收者可以。