使用netcat的ssh代理命令

时间:2015-07-27 19:48:40

标签: linux encryption ssh

在这样的例子中:

Host destination
  ProxyCommand ssh gateway nc %h %p

网关和目标之间的连接是否加密?我很困惑,因为我有两个假设,两者都没有说服力:

  • 它没有加密。源中的stdin通过源网关ssh连接加密,并在传递给nc之前解密,即nc的stdin与stdin相同,进入ssh客户端。但我认为%p是22,ssh端口 - 它不符合这个假设。

  • 它已加密,网关上的sshd守护程序传递给nc加密数据。然后说我们执行nc而不是执行cat,sshd守护程序是否也将加密数据传递给它?这听起来也不对。

1 个答案:

答案 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提示符。所以它再次加密。