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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容