客户端和服务器之间的 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:服务器如何解密客户端发送给它的数据?的主要内容,如果未能解决你的问题,请参考以下文章

ssh服务端口转发详解

ssh服务端口转发详解

SSH端口转发

SSH端口转发

SSH的端口转发

ssh端口转发小结