当您从机器 C SSH 进入 ssh 隧道 B->A 时,私钥会发生啥情况?

Posted

技术标签:

【中文标题】当您从机器 C SSH 进入 ssh 隧道 B->A 时,私钥会发生啥情况?【英文标题】:What happens to the private key when you ssh from machine C into an ssh tunnel B->A?当您从机器 C SSH 进入 ssh 隧道 B->A 时,私钥会发生什么情况? 【发布时间】:2017-10-27 12:44:31 【问题描述】:

我对当前设置中的私钥会发生什么有一些疑问。

设置:

我有 3 台机器:A、B、C。A 和 C 没有公共 IP,B 有公共 IP。我想从机器 C 访问机器 A:A

我有一个反向隧道连接 A

ssh [options] -R PORT_B:localhost:PORT_A USER_B@B_PUBLIC_IP -i user_B_private_key.pem

所以,通过这条隧道,我可以使用以下命令从机器 B SSH 到机器 A:

ssh -p PORT_B USER_A@localhost -i user_A_private_key

(注意:我不使用这个,并且机器 B 上没有 user_A_private_key)

通过这条隧道,我可以使用以下命令从机器 C SSH 到机器 A:

ssh -p PORT_B USER_A@localhost -i user_A_private_key

问题:

我想知道在最后一种情况下 user_A_private_key 会发生什么(使用隧道 A

明文密钥是否会离开机器 C? user_A_private_key 在这种方法中安全吗?这种方法安全和/或推荐吗?


注意:在机器 B 上的 SSH 服务器上,我允许 TCP 转发并使用 GatewayPorts(客户端指定)

【问题讨论】:

【参考方案1】:

在 SSH 中,私钥永远不会离开客户端计算机。服务器只获取签名和公钥,证明拥有私钥。

【讨论】:

当我使用隧道 B ==> A 从 C SSH 到 A 时,C(客户端)连接到 B(服务器)并且 B(客户端)连接到 A(服务器)。所以我的问题仍然存在:在这种情况下,user_A_private_key 是否存储在机器 B 的某个地方? 您所说的“已知”是什么意思?不。正如我已经写的那样,私钥永​​远不会存储在直接机器上。 谢谢@Jakuje

以上是关于当您从机器 C SSH 进入 ssh 隧道 B->A 时,私钥会发生啥情况?的主要内容,如果未能解决你的问题,请参考以下文章

ssh隧道理解

通过 php 中的 ssh 连接隧道请求

ssh隧道 学习总结

内网接口调用,ssh反向隧道与nginx反向代理

无法通过 SSH 隧道克隆 git

SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥