客户端和服务器之间的ssh:服务器如何解密客户端发送给它的数据?

ssh between client and server : How does server decrypt the data send by client to it?

我正在尝试了解 SSH 机制;据我了解,使用 ssh 我们可以保护客户端和服务器之间的连接。

客户端将创建私有和 public 密钥(比如使用 ssh-keygen);将 public 密钥传递给服务器。

现在,我们有这个流程:

客户端 -> 服务器;客户端有两对密钥,所以如果服务器发送数据(由 public 密钥加密,则客户端可以解密);但是服务器如何解密从客户端->服务器发送的数据;客户端将使用 public 密钥来加密数据;由于服务器只有 public 密钥,它如何解密客户端发送给它的数据?

服务器 -> 客户端;服务器只有 public 键;所以我认为这没问题;服务器将使用 public 密钥加密数据,然后客户端将使用其私钥解密数据。

but how does server decrypt the data which is being sent from the client -> server

因为在验证服务器之后,双方使用一种称为 Diffie-Hellman algorithm.
的版本协商会话密钥 该算法的设计方式是双方在会话密钥的生成中贡献相等。
生成的会话密钥是共享对称密钥,即加密和解密使用相同的密钥。

查看更多信息“Understanding SSH workflow" from Mudit Maheshwari

和“SSH (Key gen)”: