使用密钥(无密码)的 SSH 连接是否遵循单向流量?

使用密钥(无密码)的 SSH 连接是否遵循单向流量?

我有一个关于 SSH 连接的常见问题。我已经查看了一些相关的帖子和​​文档,但找不到直接的答案。

使用密钥的 SSH 连接假定客户端具有一对密钥(公钥和私钥),并且将要请求连接的服务器仅具有公钥。

我的问题是:由于一切都取决于只能通过私钥才能解密,如果我们尝试以“相反的方式”(即“服务器”要求连接到“客户端”),我们是否应该预料到会被拒绝?

答案1

因为一切都取决于只能通过私钥才能解密

这不是解密。SSH 中的公钥身份验证使用签名另一端进行验证。(客户端验证服务器的主机密钥,以及服务器验证用户个人的授权密钥也是如此。)

虽然某些算法(例如 RSA)以非常相似的方式执行签名和解密,并且可以对两者使用相同类型的密钥,但这实际上并不意味着它们是同一种操作。

如果我们尝试采用“相反的方式”(即“服务器”请求连接“客户端”),我们是否会遭到拒绝?

是的,但不完全是因为你提到的原因。

反向建立的 SSH 连接完全相互独立。客户端用于传出连接的公钥与服务器用于验证传入连接的公钥存储在不同的地方。(例如,在 Linux 上,客户端从文件中读取公钥,而服务器id_rsa.pub从文件中读取公钥authorized_keys。)

也就是说,即使系统在充当客户端时“拥有”公钥,它在充当服务器时也不会自动“拥有”相同的公钥。因此,在您的示例中,即使您实际上将私钥从“客户端”复制到“服务器”并尝试反向连接,您仍然会遭到拒绝。

相关内容