ssh 多跳命令中的洋葱式加密

ssh 多跳命令中的洋葱式加密

我们可以称之为典型的多跳 ssh 示例,我们可以看到以下命令将把用户的 ssh 流量路由到三个(虚构的)连续节点:

ssh ruapehu.example.com ssh aoraki ssh tongariro

名为ruapehu.example.comaorakitongariro。该示例通过使用代理命令简化了配置。该方案的一个弱点是前两个节点可以读取流量,而如果它们不能这样做会更好。如果我们设法在链中引入命令 [encrypt] 和 [decrypt],我们实际上可能接近 tor 网络所做的。另一个问题是如何在多跳链中引入端口转发?以下显然行不通,但这几乎是我想要做的:

[加密] ssh ruapehu.example.com ssh aoraki ssh tongariro [解密] -L 80:somesite.com:80

有人能让这样的事完成吗?

答案1

你问了两个问题:

  1. 我们如何确保通过中间主机的流量不被“嗅探”?

答案是您不需要做任何事情。 每个ruapehussh 连接已加密。和所“看到”的流量aoraki并不明文。 您无需添加任何额外的加密层。

  1. 如何启用到目的地的端口转发?

最简单的答案是使用该~/.ssh/config文件并仅为目标添加指令,如(借用您自己的参考资料,仅添加最后的线):

Host ruapehu
  HostName ruapehu.example.com

Host aoraki
  ProxyCommand ssh -q ruapehu nc -q0 aoraki 22

Host tongariro
  LocalForward 80:somesite.com:80
  ProxyCommand ssh -q aoraki nc -q0 %h 22

也就是说,假设您可以在本地主机上打开端口 80,否则您可能必须使用非特权端口,即 1024 以上的端口(取决于您的主机和配置)。

答案2

如果您一步创建从您的机器到目标机器的转发端口,然后通过该转发端口发出 SSH 连接,那么您基本上就可以实现您在上一个示例中描述的内容。

  1. 创建端口转发:

    # jump from aoraki -> tongariro
    ssh ruapehu.example.com "ssh -L 2222:tongariro:22 aoraki" 
    # jump from ruapehu.example.com -> aoraki
    ssh -L ruapehu.example.com:2222:aoraki:2222 ruapehu.example.com
    

    这期望您已经适当设置了您的服务器GatewayPorts,这样您将能够从外部绑定端口 2222。

  2. ssh发起与目标服务器的新连接:

    ssh -p 2222 ruapehu.example.com
    

    此连接将在所有中间步骤中加密,您还可以通过它设置另一个端口转发。

相关内容