2010-01-04 74 views
0

我总是在putty中使用ssh来连接远程服务器。据我所知,ssh是基于公钥/私钥的机制,是吗?两台机器如何通过SSH连接进行身份验证?

这是否意味着客户端在连接到服务器后首次接收到公钥,然后使用公钥继续进行以下通信?

谢谢。

+0

我澄清了标题。 – Soviut 2010-01-04 08:56:14

回答

1

有两个部分,其中的公钥/私钥开始发挥作用 - 会话初始化和(可选)用户身份验证。

在会话初始化时,公钥和私钥用于设置加密连接,但不用于加密连接本身。相反,初始设置用于安全地生成用于加密连接的唯一会话密钥。主机公钥/私钥在服务器上生成并安装。

连接时,您的ssh客户端(本例中为PuTTY)将验证主机密钥是从上次连接时记得的。 (如果它们不同,那么有人可能会窃听你的连接!)这就是为什么PuTTY要求你在首次连接时确认主机密钥的哈希值 - 它没有记录密钥是什么应该是,所以它会要求你验证。如果您告诉PuTTY确认并保存,PuTTY会将主机密钥的散列保存在注册表中以备将来连接。

在用户认证中,使用公钥和私钥来允许访问服务器。公钥在服务器上为用户安装。然后,服务器可以使用该密钥向客户端发出挑战,只有使用用户的私钥才能正确回答该问题。用户自己生成公钥/私钥(例如,使用ssh-keygen)。

对于PuTTY,您可以使用PuTTYgen实用程序(这是与ssh-keygen相同的PuTTY)生成您自己的公钥和私钥。这取决于你如何获得公钥installed on the server。然后,运行Pageant(位于通知区域的小应用程序)并添加您的私钥。如果您在私钥上设置密码,则Pageant将提示您输入密码。 Pageant在运行时会与PuTTY(或者pscp,psftp等)一起使用,以便使用您的私钥。

这是对所涉及过程的严格简化;请参阅詹姆斯'答案为链接到细节。

+0

你能否对Putty的实现给予更多的阐述? – Ricky 2010-01-05 10:42:39

+0

用PuTTY位编辑我的回复。请阅读PuTTY文档中有关pubkeys的部分:http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey – ZoogieZork 2010-01-05 17:55:41

相关问题