ssh代理,所谓的正向和反向只是


ssh功能还是很强大的,提供了三个代理参数

  • -L参数,正向代理
  • -R参数,反向代理
  • -D参数,socks5代理

附加参数 -v 显示详细信息 -N仅转发数据

说的通俗易懂点就是我有 hostA,hostB,hostC

如图 hostAhostB能通信,hostChostB也能通信
但是hostAhostC不能通信。

所谓的正向和反向只是相对的,相对于你的机器是A还是C

正向代理

这个时候可以然A通过B去访问C就是正向代理
可以使用如下命令
此时访问BportB端口相当于访问CportC端口(在B中执行)

ssh -LvN 0.0.0.0:PortB:HostC:PortC user@HostC

此时访问A的portA端口相当于访问CportC端口(在A中执行)

ssh -LvN 0.0.0.0:PortA:HostC:PortC user@HostB
反向代理

这个时候C通过B访问A就是反向代理,就跟nginx一道理
可以使用如下命令
这个时候C访问BPortB端口相当于访问APortA端口(在A中执行)

ssh -RvN 0.0.0.0:PortA:HostB:PortB user@HostB

当然还要开启hostB上的sshdGatewayPorts yes
配置文件位置/etc/ssh/sshd_config
修改完成记得reload

systemctl restart sshd
socks5代理

本地启动一个socks5服务,将发送到该端口的数据全部通过B转发出去

ssh -DvN PortA  user@HostB

相关内容