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