SSh服务端口转发

来源:互联网 发布:jquery ajax get json 编辑:程序博客网 时间:2024/05/18 20:47

SSH端口转发:

SSH会自动加密和解密所有SSH 客户端与服务端之间的网络数据。SSH还能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为SSH 为其他TCP链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH的连接,也能够通过将TCP端口转发来使用SSH进行通讯。

SSH 端口转发能够提供两大功能:

(1)、加密 SSH Client 端至SSH Server端之间的通讯数据;

(2)、突破防火墙的限制完成一些之前无法建立的TCP连接;

角色定义:

A. 本地服务器,想通过中间服务器B间接访问目标服务器C;

B. 中间服务器,类似于代理,A以B的名义去访问C;

C. 目标服务器,C看到的都是中间服务器B在访问自己;


本地转发:

ssh -L localport:remotehost:remotehostportsshserver

选项:

-f:后台启用

-N:不打开远程shell,处于等待状态

-g:启用网关功能

示例:

在A主机上执行:ssh –L 156:telnetsrv:23-fN sshsrv:该命令表示,建立了一条由A主机随机开启的一个端口—>ssh服务器之间(B主机的22端口)的隧道。A主机上的ssh服务监听自己主机的156端口,当有数据访问自己(A主机)的156端口时,数据便会经过隧道,发送给ssh服务端。(注意:本例中的数据就是telnet服务)ssh服务端(B主机)代替telnet客户端(A主机)向telnet服务端(C主机)发送请求!-fN,表示隧道搭好之后,在后台运行。

在A主机上执行:telnet 127.0.0.1 156:访问本机的156端口。此时,该命令就类似于在ssh服务器端执行了“telnet telnetsrv:23”的命令(注意:ssh服务端(B主机)不必安装telnet。因为只需要ssh服务端提供转发的功能)。当访问本机的156的端口时,被加密后转发到sshsrv的ssh服务,再解密,然后数据被转发到telnetsrv:23;

注意:在本地转发中,A主机:ssh服务的客户端,telnet的客户端;B主机:ssh服务的服务端;C主机:telnet服务的服务端。

data --->localhost:156--->localhost:XXXXX--->sshsrv:22--->sshsrv:YYYYY--->telnetsrv:23

 

远程转发:

远程转发的环境和目的与本地端口转发是一样的,远程准发只是不在本地服务器A上执行命令,而是在中间服务器B上执行;为什么不直接在服务器A自己身上执行命令呢?这个场景有别于本地端口转发的地方在于:A不能主动连接B但反之可以。比如A在外网,B、C在内网;而A去访问的时候,同样都是通过自己的IP和端口,同样首先建立AB之间的SSH通道,以服务器B的名义来访问目标服务器C。

ssh -R sshserverport:remotehost:remotehostportsshserver

示例:

在中间服务器(B)执行:ssh –R 9527:telnetsrv:23 –N sshsrv:中间服务器B会随机开启一个端口访问A机器的22端口,建立一条以ssh加密的通道。当A主机访问自己主机的9527端口的时候,会将数据传送给A自己主机的22端口,经过加密的通道,传送到中间服务器上。中间服务器收到数据后,ssh服务会随机开启一个端口,将数据发送给telnet服务器(C)的23端口上。

在A主机上执行:telnet 127.0.0.1 9527:让sshsrv(A主机)侦听自己的9527端口,如有访问时,就加密后,通过ssh服务转发请求到B主机的ssh的客户端,再由B主机解密后转发到telnetsrv:23;

注意:在本地转发中,A主机:ssh服务的客户端,telnet的客户端;B主机:ssh服务的服务端;C主机:telnet服务的服务端。

Data--->sshsrv:9527--->sshsrv:22--->localhost:XXXXX--->localhost:YYYYY--->telnetsrv:23

动态端口转发:(可以实现翻墙)

ssh本地和远程端口转发都需要固定的应用服务器IP和端口,但是很多情况下,应用的端口繁多逐个转发效率不高,而且一些应用使用不固定的端口,经常跳着使用端口,一些网站还不支持IP直接访问,这导致ssh本地和远程端口转发在一些使用上不是很方便,使用ssh动态端口转发可以解决以上问题。

当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet;

ssh -D 1080 root@sshserver

示例:

将A主机的firefox设置代理:socket proxy:127.0.0.1:1080

在A主机上执行:curl --socks5 127.0.0.1:1080 http://www.baidu.com

(https://www.chenyudong.com/archives/linux-ssh-port-dynamic-forward.html)这篇博客对于动态端口转发介绍的比较好

注意:要想理解ssh端口转发,需要理解,服务与端口其实是两个不同的概念(注意参考OSI网络模型)。

ssh命令,控制的只是ssh服务。

本地转发和远程转发本质是一样的,只不过是敲得命令不一样而已。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为4c突然死机了怎么办 华为畅玩4c内存不足怎么办 荣耀4c一直亮屏怎么办 华为手机返回键失灵怎么办 荣耀6p死机了怎么办 荣耀6主板烧坏了怎么办 虚拟运营商倒闭了号怎么办 买到二次放号怎么办 新运动鞋鞋穿着有点紧怎么办 一件代发被买家退货后怎么办? 洗了翻毛的鞋子怎么办 猫眼竹芋泡根了怎么办 双线花叶子卷了怎么办 华为云收藏满了怎么办 小米6云空间满了怎么办 华为云存储已满怎么办 苹果云备份空间不足怎么办 oppor9指纹与密码忘记怎么办 oppo显示密码格式不对怎么办 oppo云服务密码忘了怎么办 小米云内存满了怎么办 id储存空间满了怎么办 苹果手机邮箱服务器连接失败怎么办 苹果查看id闪退怎么办 域名卖出去后涉及赌博怎么办 发票认证后对方作废了怎么办 手机在屋里没信号怎么办 百度云上传文件和谐怎么办 收货地址写错了怎么办 阿里巴巴国际版出现加密令牌怎么办 淘宝寄货到转运仓拒收怎么办 淘宝已发货买家申请退货怎么办 买家给了一个差评不接电话怎么办 卖家单号填错了怎么办 拼多多虚假发货买家怎么办 买家退款后又收到货怎么办 买家确认收货已超时怎么办 淘宝买家不确认收货怎么办 买家快递单号填错怎么办 买家不确认收货不评价怎么办 淘宝不给改地址怎么办