ssh代理:ssh代理

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

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

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

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

#mermaid-svg-0FCz77XWJ1egfOnX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .error-icon{fill:#552222;}#mermaid-svg-0FCz77XWJ1egfOnX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0FCz77XWJ1egfOnX .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-0FCz77XWJ1egfOnX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0FCz77XWJ1egfOnX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0FCz77XWJ1egfOnX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0FCz77XWJ1egfOnX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0FCz77XWJ1egfOnX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0FCz77XWJ1egfOnX .marker.cross{stroke:#333333;}#mermaid-svg-0FCz77XWJ1egfOnX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0FCz77XWJ1egfOnX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .cluster-label text{fill:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .cluster-label span{color:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .label text,#mermaid-svg-0FCz77XWJ1egfOnX span{fill:#333;color:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .node rect,#mermaid-svg-0FCz77XWJ1egfOnX .node circle,#mermaid-svg-0FCz77XWJ1egfOnX .node ellipse,#mermaid-svg-0FCz77XWJ1egfOnX .node polygon,#mermaid-svg-0FCz77XWJ1egfOnX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0FCz77XWJ1egfOnX .node .label{text-align:center;}#mermaid-svg-0FCz77XWJ1egfOnX .node.clickable{cursor:pointer;}#mermaid-svg-0FCz77XWJ1egfOnX .arrowheadPath{fill:#333333;}#mermaid-svg-0FCz77XWJ1egfOnX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0FCz77XWJ1egfOnX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0FCz77XWJ1egfOnX .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-0FCz77XWJ1egfOnX .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-0FCz77XWJ1egfOnX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0FCz77XWJ1egfOnX .cluster text{fill:#333;}#mermaid-svg-0FCz77XWJ1egfOnX .cluster span{color:#333;}#mermaid-svg-0FCz77XWJ1egfOnX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0FCz77XWJ1egfOnX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} hostA hostB hostC

如图 hostA和hostB能通信,hostC和hostB也能通信
但是hostA和hostC不能通信。

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

正向代理

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

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

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

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

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

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

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

systemctl restart sshd
socks5代理

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

ssh -DvN PortA user@HostB

相关推荐

相关文章