当您从机器 C ssh 进入 ssh 隧道 B->A 时,私钥会发生什么变化?

What happens to the private key when you ssh from machine C into an ssh tunnel B->A?

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

设置:

我有 3 台机器:A、B、C。A 和 C 没有 public IP,B 有 public IP。我想从机器 C 访问机器 A:A <-- B <-- C.

我有一条连接 A <== B 的反向隧道,由机器 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 <== B 从 C ssh 到 A,即机器 C 上的 ssh 通过机器 B 访问机器 A) .机器 C 是服务器,它是安全的。机器 B 是一种 Jump Box;它是安全的,但出于安全原因我不希望它知道任何私钥。

明文密钥是否离开过机器C? user_A_private_key 这种方法安全吗?这种方法安全 and/or 推荐吗?


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

在 SSH 中,私钥永远不会离开客户端机器。服务器仅获得签名和 public 密钥,这证明拥有私钥。