0%

关于ssh端口转发

概述

ssh 端口转发分为三种情况本地端口转发和远程端口转发还有动态端口转发下面我用四个例子来解释这三种转发的用处

本地端口转发

机器图如下

如图所示 pc2是不可以访问互联网的,但是pc2要访问服务器中的www.bboy.app网站,因为pc1可以访问互联网。所以我们只要在pc1和服务器之间做一个ssh本地端口转发,在服务器和pc1之间建立一个隧道就可以让pc2访问pc1来实现pc2访问www.bboy.app这个网站了

在pc1里执行

sudo ssh -f -C -N -L 0.0.0.0:443:www.bboy.app:443 root@bboy.app

解释 一下参数
-L 就是使用本地端口转发,-f表示后台执行ssh指令,-C 表示请求压缩所有数据,-N表示不执行远程指,前面0.0.0.0表示本机端口可以被局域网任何机器访问,如果不加即为sudo ssh -f -C -N -L 443:www.bboy.app:443 root@bboy.app表示本地端口只允许本机访问,后面就表示ssh要www.bboy.app中443端口建立连接,其实就是下面这个意思

-L 本地网卡地址:本地端口:目标地址:目标端口

这样pc2就可以直接访问pc1的443端口来访问www.bboy.app这个网站了

远程端口转发

机器图如下

如图所示远程的server要访问局域网中的pc1上的www.bboy.app网站,只要在pc1上执行下面命令既可在服务器上访问pc1上的www.bboy.app网站

ssh -f -C -N -R 8088:0.0.0.0:8087 root@bboy.app

解释下参数,和上面命令不通的是-L变成了-R -R 表示使用远程端口转发,详细如下

-R 远程网卡地址:远程端口:目标地址:目标端口

本地端口转发和远程端口转发区别

本地端口转发是把远程服务器的服务流量转发到本地,用户是请求本地pc来访问远程服务
远程端口转发是把本地pc上的服务流量转发到远程服务器,用户是在远程服务器上访问远程服务器来访问本地pc的服务

本地端口转发是在本地pc上新开端口,远程端口转发是在远程服务器上新开端口

动态端口转发

机器图如下

使用动态端口转发可以使本地pc1发起的请求转发到server,让server代替pc1去请求,所以ssh的动态端口转发在中国经常用来做,,,,,,,

使用下面命令

sudo ssh -f -C -N -D localhost:8080 root@bboy.app

之后再浏览器或者系统设置中设置代理来访问网站

解释下参数意思

-D 本地网卡地址:本地端口

把本地端口转发和远程端口转发结合起来

机器图如下

局域网12完全不互通,可能在两个地域

pc1上运行着www.bboy.app的网站,要使pc2访问

首先在pc1上运行远程端口转发,吧pc1上的服务转发到服务器上

ssh -f -C -N -R 8087:localhost:8087 root@bboy.app

之后再pc2上运行本地端口转发

sudo ssh -f -C -N -L localhost:80:localhost:8087 root@bboy.app

之后再本地访问localhost

欢迎关注Bboysoul的博客www.bboy.app

Have Fun