ssh正向代理与反向代理

场景

我们开发的时候经常遇到一个问题,开发的web服务器或后台服务在公司的服务器上,但是回到家或假期需要开发的时候,自己的笔记本无法连接这些服务,一种方法是用vagrant搞一套仿真的开发环境,但是这要求我们的笔记本内存足够大,并且还需要经常进行同步,如何能够在家里访问呢?
ssh隧道是个不错的选择。

常用参数

  • -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
  • -C 表示压缩数据传输
  • -f 告诉SSH客户端在后台运行
  • -q Quiet mode. 安静模式,忽略一切对话和错误提示
  • -g:允许远程主机连接主机的转发端口
  • -L port:host:hostport 做本地映射端口(正向隧道,监听本地port)
    • 需要使用的本地端口号(7001)
    • 需要访问的目标机器IP地址
    • 需要访问的目标机器端口(端口: 21)
  • -R。port:host:hostport 该参数的三个部分的含义分别(反向隧道,监听远程port)
    • 远程机器使用的端口(8080)
    • 需要映射的内部机器的IP地址(127.0.0.1)
    • 需要映射的内部机器的端口(22)
    • -R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上
  • -D port 指定一个本地机器 ``动态的 应用程序端口转发
  • ssh正向代理
    目的是从本地访问远程的服务
    远程是ssh server, 本地是ssh client, 侦听端口在本地
ssh -fCNg -L 7001:<远程内部服务器-ip>:<远程内部服务-port> @<远程网关IP> -p <远程网关的ssh 服务 port>  
ftp localhost:7001 # 现在访问本地7001端口,就能连接在内网的服务了
  • SSH动态代理
    目的是从本地访问远程的服务
    远程是ssh server, 本地是ssh client, 侦听端口在本地
ssh -fCNg -D 0.0.0.0:1080 @<远程网关IP>  -p <远程网关ssh的port># 将端口绑定在127.0.0.1上
在浏览器里设置代理,用localhost和1080即可,访问的时候直接用内部的地址;
  • SSH 反向代理
    目的是从远程访问本地的服务
    ssh server在本地,远程是ssh client, 端口侦听在远程的服务器上
ssh -CfNg -R 7001:<本地内部服务器-ip>:<本地内部服务-port> @<远程网关IP> -p <远程网关的ssh 服务 port>  

在远程的服务器上可以通过7001端口访问到本地的服务,

你可能感兴趣的:(ssh正向代理与反向代理)