我对使用ssh的ProxyCommand功能感到满意,并且可以使用它来跳过多个堡垒主机以有效地到达最终主机。但是我似乎无法理解它在后端的实际工作方式。
例如。我有以下配置文件。
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh user@bastion.com -W %h:%p"
我知道,要连接到主机final
,ProxyCommand将在与主机建立连接之前运行final.com
。但是我似乎仍然无法理解连接的顺序。
该选项有-W %h:%p
什么作用?我了解这是netcat功能,与相似nc %h %p
。
据我了解,这里是操作顺序。请告诉我是否有错。我将在示例中使用上面指定的配置文件。
- 用户输入
ssh final
- 与bastion.com的ssh连接已创建。
- 将创建一个从bastion.com到final.com的端口22的网猫隧道。netcat的stdin连接到在与bastion.com的连接中获得的外壳。
- 因此,现在我们已经从系统连接到final.com。此连接的前半部分是从我们的系统到bastion.com的ssh连接。此连接的后半部分是从bastion.com到final.com的netcat隧道。
- 现在,
ssh final
命令将上述连接用作代理,并通过此现有连接隧道传输其数据。
另外,我还想知道这种技术是否也称为ssh stacking?
添加换行符