ssh-正向与反向代理

  1. 常用参数
  2. 栗子
  3. 实战

常用参数

  • -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
  • -C 表示压缩数据传输
  • -f 告诉SSH客户端在后台运行
  • -q Quiet mode. 安静模式,忽略一切对话和错误提示
  • -g:允许远程主机连接主机的转发端口
  • -L port:host:hostport 做本地映射端口(正向隧道,监听本地port)
    • 需要使用的本地端口号
    • 需要访问的目标机器IP地址(IP: 234.234.234.234)
    • 需要访问的目标机器端口(端口: 21)
  • -R。port:host:hostport 该参数的三个部分的含义分别(反向隧道,监听远程port)
    • 远程机器使用的端口(2222)
    • 需要映射的内部机器的IP地址(127.0.0.1)
    • 需要映射的内部机器的端口(22)
    • 栗子 -R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上
  • -D port 指定一个本地机器 ``动态的 应用程序端口转发

栗子

ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123
ftp localhost:2121 # 现在访问本地2121端口,就能连接234.234.234.234的21端口了
  • 保持长时间连接

    ssh -R 2222:localhost:22 123.123.123.123 "vmstat 30"
    
  • SSH隧道建立SOCKS服务器

    ssh -N -f -D 1080 123.123.123 # 将端口绑定在127.0.0.1上
    ssh -N -f -D 0.0.0.0:1080 123.123.123.123 # 将端口绑定在0.0.0.0上
    
  • SSH 建立正向代理

    ssh -CfNg -L 6300:127.0.0.1:1521 oracle@172.16.1.164
    
  • SSH 建立反向代理

    ssh -CfNg -R 1521:127.0.0.1:6300 oracle@172.16.1.164
    

实战

有A,B,C 3台服务器;

A,C有公网IP, B是某IDC的服务器无公网IP。

A通过B连接C的80端口(A<=>B<=>C), 那么在B上执行如下命令即可:

ssh -CfNg -L 6300:127.0.0.1:80 userc@C
ssh -CfNg -R 80:127.0.0.1:6300 usera@A
posted @ 2019-03-17 18:57  tanoak  阅读(1936)  评论(0编辑  收藏  举报