场景
我们开发的时候经常遇到一个问题,开发的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> <user>@<远程网关IP> -p <远程网关的ssh 服务 port>
ftp localhost:7001 # 现在访问本地7001端口,就能连接在内网的服务了
- SSH动态代理
目的是从本地访问远程的服务
远程是ssh server, 本地是ssh client, 侦听端口在本地
ssh -fCNg -D 0.0.0.0:1080 <user>@<远程网关IP> -p <远程网关ssh的port># 将端口绑定在127.0.0.1上
在浏览器里设置代理,用localhost和1080即可,访问的时候直接用内部的地址;
- SSH 反向代理
目的是从远程访问本地的服务
ssh server在本地,远程是ssh client, 端口侦听在远程的服务器上
ssh -CfNg -R 7001:<本地内部服务器-ip>:<本地内部服务-port> <user>@<远程网关IP> -p <远程网关的ssh 服务 port>
在远程的服务器上可以通过7001端口访问到本地的服务,