客户端和服务器之间的 ssh:服务器如何解密客户端发送给它的数据?
Posted
技术标签:
【中文标题】客户端和服务器之间的 ssh:服务器如何解密客户端发送给它的数据?【英文标题】:ssh between client and server : How does server decrypt the data send by client to it? 【发布时间】:2020-07-26 09:03:41 【问题描述】:我正在尝试了解 SSH 机制;据我了解,使用 ssh 我们可以保护客户端和服务器之间的连接。
客户端将创建私钥和公钥(比如使用 ssh-keygen);将公钥传递给服务器。
现在,我们有这个流程:
客户端 -> 服务器;客户端拥有两对密钥,因此如果服务器发送数据(由公钥加密,则客户端可以解密);但是服务器如何解密从客户端->服务器发送的数据;客户端将使用公钥加密数据;由于服务器只有公钥,它如何解密客户端发送给它的数据?
服务器 -> 客户端;服务器只有公钥;所以我认为这没关系;服务器将使用公钥加密数据,然后客户端将使用其私钥解密数据。
【问题讨论】:
您使用 ssh-keygen 生成的密钥用于身份验证。它不用于加密客户端和服务器之间的数据流。无论如何,这个问题目前的形式相当广泛。如果您想了解 ssh 如何加密其会话,您应该从 ssh ***页面和 RFC 开始。 【参考方案1】:但是服务器如何解密从客户端发送的数据 -> 服务器
因为在验证服务器之后,双方使用称为Diffie-Hellman algorithm 的版本协商会话密钥。 该算法的设计方式是双方在会话密钥的生成中贡献相等。 生成的会话密钥是共享对称密钥,即加密和解密使用相同的密钥。
在 Mudit Maheshwari
的“Understanding SSH workflow”处查看更多信息还有“SSH (Key gen)”:
【讨论】:
以上是关于客户端和服务器之间的 ssh:服务器如何解密客户端发送给它的数据?的主要内容,如果未能解决你的问题,请参考以下文章