带netcat的SSH代理命令



例如:

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提示符。因此再次加密

最新更新