例如:
Host destination
ProxyCommand ssh gateway nc %h %p
网关和目的地之间的连接是否加密?我很困惑,因为我有两个假设,都不令人信服:
没有加密。source中的stdin经过源网关ssh连接加密,并在传递给
nc
之前被解密,即nc的stdin与源处ssh客户端的stdin相同。但是我认为%p
是22,ssh端口——这与这个假设不符合。它是加密的,网关的sshd守护进程传递给nc加密的数据。然后说我们不执行
nc
,而是执行cat
, sshd守护进程是否也将加密的数据传递给它?听起来也不对。
当然是加密的!为了更好地理解这里发生了什么:
[ client $ ssh destination ]
|
'-> [ gateway $ nc destination 22 ]
|
'-> [ destination $ whatever]
在客户端只运行ssh destination
。这是翻译成ssh gateway nc destination 22
。
第一个执行的命令是ssh gateway
with command。我们已经加密了第一步。
在gateway
服务器上执行nc destination 22
命令。它所做的基本上是将所有I/O重定向到destination
主机,就像它一样(但我们已经在加密通道中了!)。
因此,您将再次使用destination
进行密钥交换和身份验证,在它成功之后,您可能会在那里得到shell提示符。因此再次加密