我总是在putty中使用ssh来连接远程服务器。据我所知,ssh基于公钥/私钥机制,是吗?
这是否意味着客户端在连接到服务器时会首次收到公钥,然后使用公钥继续进行以下通信?
感谢。
答案 0 :(得分:2)
您的意思是认证还是加密?
对于身份验证,此处的第5.5.1节涵盖了它: http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch05_05.htm#ch05-46136.html
通常,您可以创建密钥对并通过其他方式将密钥对发送到那里。
如果您要加密,请尝试此处的第3.9.1.3节: http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch03_09.htm#ch03-65213.html
答案 1 :(得分:1)
公钥/私钥有两个部分 - 会话初始化和(可选)用户身份验证。
在会话初始化中,主机公钥和私钥用于设置加密连接,但不用于加密连接本身。相反,初始设置用于安全地生成用于加密连接的唯一会话密钥。主机公钥/私钥在服务器上生成并安装。
连接时,您的ssh客户端(本例中为PuTTY)将验证主机密钥是否是您上次连接时记住的密钥。 (如果它们不同,那么有人可能会窥探您的连接!)这就是为什么PuTTY要求您在第一次连接时确认主机密钥的哈希值 - 它没有关键字的记录< em>假设是,所以它要求你验证。如果您告诉PuTTY确认并保存,那么PuTTY会将主机密钥的哈希值保存在注册表中以备将来连接。
在用户身份验证中,用户公钥和私钥用于允许访问服务器。在服务器上为用户安装公钥。然后,服务器可以使用该密钥向客户端发出质询,只有使用用户的私钥才能正确回答。用户自己生成公钥/私钥(例如,使用 ssh-keygen )。
对于PuTTY,您可以使用PuTTYgen实用程序生成自己的公钥和私钥(这是相当于ssh-keygen的PuTTY)。由您决定如何获取公钥installed on the server取决于您。然后,运行Pageant(位于通知区域的小应用程序)并添加您的私钥。如果您在私钥上设置了密码,那么Pageant会提示您输入密码。 Pageant在运行时将使用PuTTY(或pscp,psftp等)来使用您的私钥。
这是对所涉及过程的粗略简化;请参阅 James '回答以获取详细信息的链接。