赞
踩
SSH客户端和SSH服务器建立SSH隧道,隧道中的所有数据都被加密。
SSH客户端:隧道的发起方 SSH服务器:隧道的响应方
应用一:应用仅限在SSH客户端和SSH服务器之间。SSH客户端不仅是隧道的发起方,还是应用的发起方。SSH服务器不仅是隧道的响应方,还是应用服务器。 例如:SSH客户端PC访问SSH服务器mysql服务/web服务。 |
应用二:应用在非SSH客户端和SSH服务器之间。SSH客户端仅是隧道的发起方,不是应用的发起方。SSH服务器不仅是隧道的响应方,还是应用服务器。例如:win7 PC访问SSH服务器mysql服务/web服务。 |
应用三:应用在SSH客户端和非SSH服务器之间。SSH服务器仅仅是隧道的响应方,不作为应用服务器。SSH客户端不仅是隧道的发起方,还是应用的发起方。 例如:SSH客户端 PC访问server2008的远程桌面服务/web服务。 |
应用三:应用在非SSH客户端和非SSH服务器之间。SSH客户端仅是隧道的发起方,SSH服务器仅是隧道的响应方。 例如:win7 PC访问访问server2008的远程桌面服务/web服务。 |
传统的非加密应用都可以通过SSH加密隧道来传输,保证数据的私密性。
【SSH本地转发:1】-应用四之http应用
基本环境介绍:
1、ssh客户端:centos7系统,默认已经安装了openssh
2、ssh客户端同网段win7:
3、ssh服务器:centos7系统,默认已经安装了openssh
4、ssh服务器同网段windows server2008:
server2008是一台CA服务器(开启web服务)
win7和server2008都是没有网关的,他们是不能直接互访的。
现在的操作是让win7能访问server2008的web服务--【应用四】。
5、透明防火墙禁止一切应用除了SSH。
具体操作:
SSH客户端是隧道的发起方
SSH服务器是隧道的响应方
win7是http应用的发起方
server2008是http应用的响应方
1、ssh客户端连接ssh服务器-使用本地转发
ssh -L 192.168.1.10:7000:192.168.2.11:80 root@192.168.2.10
192.168.1.10:7000--------------ssh客户端监听7000端口
root@192.168.2.10------------ssh客户端使用root账户登录ssh服务器192.168.2.10
192.168.2.11:80----------------ssh客户端在7000端口接收访问请求,ssh服务器端发出访问请求,访问192.168.2.11 web服务
2、测试
win7 PC访问ssh客户端:http://192.168.1.10:7000
win7 PC访问ssh客户端:http://192.168.1.10:7000/certsrv
注意:此时SSH客户端相当于一台服务器,提供7000服务。
ssh服务器:
ssh客户端192.168.1.10和ssh服务器192.168.2.10建立ssh连接,而后ssh服务器192.168.2.10和web服务器192.168.2.11建立http连接。
web服务器:
此应用和FW NAT应用有类似之处:
在防火墙应用中,win7客户端不设置网关,但是又要访问外网的服务器,在FW上将外网的服务器映射到内网中来:
192.168.2.11:80---->192.168.1.10:7000
win7通过访问防火墙映射地址-同网段地址,达到访问外网服务器的目的:
192.168.1.11----->192.168.1.10:7000 client->FW
防火墙将做NAT转换,源地址192.168.1.11转换成防火墙公网地址,目的地址和端口192.168.1.10:7000转换成实际外网服务器的地址和端口192.168.2.11:80。
SSH本地转发和FW两次NAT(先做目的地址转换再做源地址转换)的区别是:
SSH本地转发使用SSH隧道,SSH客户端到SSH服务器的所有数据都是加密的;
FW两次NAT,仅仅只做NAT,不做加密。
【SSH本地转发:2】-应用四之远程桌面应用
SSH客户端是隧道的发起方
SSH服务器是隧道的响应方
win7是远程桌面应用的发起方
server2008是远程桌面应用的响应方
ssh客户端:
ssh -L 192.168.1.10:7000:192.168.2.11:3389 root@192.168.2.10
ssh客户端为centos7系统,未安装图形界面。
win7:
令细微区别: | |
命令1: | ssh -L 7000:192.168.2.11:3389 root@192.168.2.10 |
命令2: | ssh -g -L 7000:192.168.2.11:3389 root@192.168.2.10 |
命令3: | ssh -L 192.168.1.10:7000:192.168.2.11:3389 root@192.168.2.10 |
命令4: | ssh -g -L 192.168.1.10:7000:192.168.2.11:3389 root@192.168.2.10 |
【SSH本地转发:3】-应用一、应用二之http应用
SSH客户端是隧道的发起方也是应用的发起方
SSH服务器是隧道的响应方同时也是应用服务器(web服务器)
win7是应用的发起方
ssh客户端:
ssh -L 192.168.1.10:7000:192.168.2.10:80 root@192.168.2.10
或者
ssh -L 192.168.1.10:7000:localhost:80 root@192.168.2.10
测试:
SSH客户端:没有安装图形窗口
可以使用命令来测试:
curl http://192.168.1.10:7000
这里略。
win7:
【SSH本地转发:4】-应用三之http应用
SSH客户端是隧道的发起方也是http应用的发起方
SSH服务器是隧道的响应方
server2008是http应用的响应方
ssh客户端:
ssh -L 192.168.1.10:7000:192.168.2.11:80 root@192.168.2.10
测试:
SSH客户端:没有安装图形窗口
可以使用命令来测试:
curl http://192.168.1.10:7000
这里略。
【SSH本地转发:5】--应用四之netcat应用
SSH客户端是隧道的发起方
SSH服务器是隧道的响应方
win7是netcat应用的发起方
server2008是netcat应用的响应方
Server2008:
创建服务端:nc -l -p 4444 //此时并不能对服务端进行命令执行
服务端:nc -l -p 4444 -e cmd.exe //客户器端可以对服务端执行cmd的命令
SSH客户端:
ssh -L 192.168.1.10:7000:192.168.2.11:4444 root@192.168.2.10
win7:
nc 192.168.1.10 7000
nc 192.168.1.10 7000 -e cmd.exe
组合1 | 服务端:nc -l -p 4444 客户端: nc 192.168.1.10 7000 | 客户端不可以对服务端执行cmd的命令 服务端不可以对客户端执行cmd的命令 |
组合2 | 服务端:nc -l -p 4444 客户端: nc 192.168.1.10 7000 -e cmd | 客户端不可以对服务端执行cmd的命令 服务端可以对客户端执行cmd的命令 |
组合3 | 服务端:nc -l -p 4444 -e cmd 客户端: nc 192.168.1.10 7000 | 客户端可以对服务端执行cmd的命令 服务端不可以对客户端执行cmd的命令 |
组合4 | 服务端:nc -l -p 4444 -e cmd 客户端: nc 192.168.1.10 7000-e cmd | 客户端可以对服务端执行cmd的命令 服务端可以对客户端执行cmd的命令 |
本地转发总结:
隧道的建立方向和应用的发起方向一致。
【SSH远程转发:1】之远程桌面应用
由于限制,ssh客户端不能主动连接SSH服务器,但是SSH服务器能主动连接SSH客户端。
SSH客户端是隧道的响应方
SSH服务器是隧道的发起方
win7是远程桌面应用的发起方
server2008是远程桌面应用的响应方
SSH服务器:
ssh -R 192.168.1.10:9000:192.168.2.11:3389 root@192.168.1.10
SSH服务器和SSH客户端建立SSH隧道。
SSH客户端:
根据SSH服务器的的要求在9000端口监听。
win7:
注意:
远程转发,SSH客户端上,需要修改配置文件(启用sshd服务):
否则:
ssh -R 192.168.1.10:9000:192.168.2.11:3389 root@192.168.1.10
即使指定了监听地址192.168.1.10,同网段192.168.1.X地址也不能通过192.168.1.10:9000访问远程server2008。
当在ssh客户端配置
后,
SH服务器端:
ssh -R 9000:192.168.2.11:3389 root@192.168.1.10
或者
ssh -R 192.168.1.10:9000:192.168.2.11:3389 root@192.168.1.10
都有效。
【SSH远程转发:2】之远程桌面应用
SSH客户端是隧道的发起方
SSH服务器是隧道的响应方
win7是远程桌面应用的响应方
server2008是远程桌面应用的发起方
SSH客户端:
ssh -R 192.168.2.10:9000:192.168.1.11:3389 root@192.168.2.10
SSH服务器端:
SSH服务器根据SSH客户端要求在9000端口监听。
server2008:
server2008成功访问win7
SSH服务器端:
远程转发总结:
隧道的建立方向和应用的发起方向相反。
本地转发 |
1、 ssh -L 80:localhost:80 root@192.168.2.10 ssh -L 21:localhost:21 root@192.168.2.10 ssh -L 23:localhost:23 root@192.168.2.10 ssh -L 3306:localhost:3306 root@192.168.2.10 隧道发起方:SSH客户端 隧道响应方:SSH服务器 应用发起方:SSH客户端 应用响应方:SSH服务器(同时也是应用服务器) |
2、 ssh -L 192.168.1.10:80:localhost:80 root@192.168.2.10 ssh -L 192.168.1.10:21:localhost:21 root@192.168.2.10 ssh -L 192.168.1.10:23:localhost:23 root@192.168.2.10 ssh -L 192.168.1.10:3306:localhost:3306 root@192.168.2.10 隧道发起方:SSH客户端 隧道响应方:SSH服务器 应用发起方:SSH客户端和非SSH客户端(其他通过网络能够访问SSH客户端PC的应用) 应用响应方:SSH服务器(同时也是应用服务器) |
3、 ssh -L 192.168.1.10:80:192.168.2.11:80 root@192.168.2.10 ssh -L 192.168.1.10:21: 192.168.2.11:21 root@192.168.2.10 ssh -L 192.168.1.10:23: 192.168.2.11:23 root@192.168.2.10 ssh -L 192.168.1.10:3306: 192.168.2.11:3306 root@192.168.2.10 隧道发起方:SSH客户端 隧道响应方:SSH服务器 应用发起方:SSH客户端和非SSH客户端(其他通过网络能够访问SSH客户端PC的应用) 应用响应方:非SSH服务器-SSH服务器能够通过网络访问到的应用服务器 |
远程转发 |
1、 ssh -R 80:localhost:80 root@192.168.1.10 ssh -R 21:localhost:21 root@192.168.1.10 ssh -R 23:localhost:23 root@192.168.1.10 ssh -R 3306:localhost:3306 root@192.168.1.10 隧道发起方:SSH服务器 隧道响应方:SSH客户端 应用发起方:SSH客户端 应用响应方:SSH服务器-SSH服务器同时也是应用服务器 注: 使用场景:一方只允许被动接受SSH连接,不允许主动发起SSH连接的情况下 条件限制:被动接受方需要安装ssh应用和开启sshd服务。 |
2、 ssh -R 80:localhost:80 root@192.168.1.10 ssh -R 21:localhost:21 root@192.168.1.10 ssh -R 23:localhost:23 root@192.168.1.10 ssh -R 3306:localhost:3306 root@192.168.1.10 隧道发起方:SSH服务器 隧道响应方:SSH客户端 应用发起方:SSH客户端和非SSH客户端 应用响应方:SSH服务器-SSH服务器同时也是应用服务器 注: 使用场景:一方只允许被动接受SSH连接,不允许主动发起SSH连接的情况下 条件限制:被动接受方需要安装ssh应用和开启sshd服务。 |
3、 ssh -R 80:192.168.2.11:80 root@192.168.1.10 ssh -R 21: 192.168.2.11:80:21 root@192.168.1.10 ssh -R 23: 192.168.2.11:80:23 root@192.168.1.10 ssh -R 3306: 192.168.2.11:80:3306 root@192.168.1.10 隧道发起方:SSH服务器 隧道响应方:SSH客户端 应用发起方:SSH客户端和非SSH客户端 应用响应方:非SSH服务器-SSH服务器能够通过网络访问的其他应用服务器。 注: 使用场景:一方只允许被动接受SSH连接,不允许主动发起SSH连接的情况下 条件限制:被动接受方需要安装ssh应用和开启sshd服务。 |
隧道方向:SSH客户端--------------->SSH服务器端
本地转发:实际上等同于将外网服务器映射到内网中来,供内网应用访问;
远程转发:实际上等同于将内网服务器映射到公网,供公网应用访问。
本地转发和远程转发都存在本地地址:端口和远程地址:端口一一对应的情况。
动态端口转发:不指定映射关系,内网访问的所有目标地址:端口由SSH服务器代其访问。
类似于FW的SNAT源地址转换。
SSH客户端和SSH服务器组成代理服务器;SSH客户端负责监听-接受访问请求,SSH服务器负责发出请求,将回应通过SSH客户端转发给实际请求者
SSH动态端口转发:1----应用仅限在SSH客户端和SSH服务器之间
SSH客户端:
ssh -fN -D 192.168.1.10:20000 root@192.168.2.10
注意:SSH客户端登录SSH服务器,这里使用的是公钥认证----SSH客户端的公钥已经上传到SSH服务器上。
SSH客户端已经在20000端口开始监听了。
现在测试从SSH客户端访问SSH服务器的80端口
成功。
SSH服务器-web应用服务器index.html主页如下:
SSH动态端口转发:2----应用不再仅限在SSH客户端和SSH服务器之间
需求:使win7能够访问SSH服务器的web应用。
SSH客户端:
ssh -g -fN -D 192.168.1.10:20000 root@192.168.2.10
隧道已经建立好。
win7:
设置IE代理
win7直接访问ssh服务器web服务
ssh服务器:
SSH动态端口转发:3----应用不在SSH客户端和SSH服务器之间
需求:使win7能够访问server2008服务器的web应用和远程桌面。
SSH客户端:
ssh -g -fN -D 192.168.1.10:20000 root@192.168.2.10
win7:
设置IE代理
server2008:
server2008应用服务器没有设置网关
测试:web服务
win7:
直接访问server2008 web服务
server2008:
web服务请求源地址为ssh服务器192.168.2.10
测试:远程桌面服务
win7:
win7系统自带的mstsc应用程序,不能设置代理服务器,必须借助其他工具。
这里使用SocksCap64
设置代理服务器地址和端口(ssh客户端地址和监听端口)
将mstsc应用程序添加进来。
选择”在代理隧道中运行选中程序”
SocksCap64会自动打开mstsc
输入server2008服务器地址--连接
win7已经连接上server2008了。在服务器上看,源地址为192.168.2.10,为SSH服务器。
SocksCap64使mstsc用代理来远程连接服务器,可能不太稳定,需要多连接几次。
总结:
SSH服务器能够访问的应用或者使用的服务,通过动态端口转发机制,SSH客户端或者能够访问SSH客户端的其他应用都能访问或者使用。
SSH客户端PC不使用centos系统,这次使用win7系统。SSH服务器还是使用centos。
win7是不自带ssh客户端程序的,这里借助工具putty和MobaXterm。
1、putty
A、本地转发
设置ssh服务器地址和端口
设置本地转发:win7ssh客户端本地监听8000和9000端口,映射到远端服务器
0.0.0.0:8000-------------------------------->192.168.2.10:80(ssh服务器web服务)
0.0.0.0:9000-------------------------------->192.168.2.11:3389(server2008服务器远程桌面服务)
SSH客户端PC上测试:
访问SSH服务器的web服务
访问server2008的远程桌面
win7上测试:
访问SSH服务器web服务和server2008远程桌面
注意:win7访问的目的地址和端口是ssh客户端的地址和监听端口
192.168.1.10:8000
192.168.1.10:9000
win7通过192.168.1.10:9000成功访问server2008远程桌面服务。
总结:
实际效果:
服务器192.168.2.10:80映射到内网192.168.1.10:8000
服务器192.168.2.11:3389映射到内网192.168.1.10:9000
B、远程转发
设置远程转发:ssh服务器本地监听8888和9999端口,映射到本地服务器
192.168.2.10:8888-------------------------->192.168.1.10:3389(ssh客户端远程桌面服务)
192.168.2.10:9999-------------------------->192.168.1.11:3389(win7主机远程桌面服务)
注意这时候应用从外网发起
server2008:
server2008同时访问ssh服务器的8888和9999端口
远程桌面成功登录win7,远程桌面登录ssh客户端,黑屏和自动断开。
远程192.168.2.10:8888(实际上是远程到192.168.1.10SSH客户端PC上),而SSH客户端是隧道的发起方,一直黑屏,且自动断开远程桌面连接。
远程192.168.2.10:9999 (实际上是远程到192.168.1.11 win7客户端PC上),很正常。
server2008通过远程转发访问ssh客户端的3389,黑屏及断开原因查找:
不通过远程端口转发,server2008直接远程桌面SSH客户端PC和win7PC:
注意:需要给server2008设置网关地址,同样SSH客户端PC和win7PC也需要网关地址。
没有经过加密的SSH隧道,远程桌面正常。
server2008成功远程桌面SSH客户端PC和win7PC。
即远程转发不能将ssh客户端的3389服务映射出去,ssh客户端其他服务映射不受影响。
非ssh客户端的服务映射不受影响。
C、动态端口转发
SSH客户端PC:
设置动态端口转发:ssh客户端本地监听7000端口
ssh客户端设置IE代理
从SSH客户端分别访问SSH服务器和server2008服务器的web应用。
ssh客户端上设置代理服务器地址和端口
SSH客户端PC成功访问server2008远程桌面。
远程桌面访问的源地址为192.168.2.10(ssh服务器),非SSH客户端192.168.1.10
SSH服务器上检查:
Server2008:
win7 PC访问SSH服务器和server2008 web应用:
和前面在SSH客户端PC上访问类似,注意IE代理设置:
SSH客户端上设置是127.0.0.1:7000,这里(win7)设置是192.168.1.10:7000。
win7PC访问server2008远程桌面应用:
和前面在SSH客户端访问类似,注意sockscap64代理设置
前面设置是127.0.0.1:7000,这里设置是192.168.1.10:7000
2、MobaXterm
SSH客户端和win7 PC都安装MobaXterm工具
A、本地转发
SSH客户端监听12345,192.168.2.10是SSH服务器同时还是remote server。
SSH客户端监听8080,192.168.2.10是SSH服务器,remote server是192.1668.2.11。
SSH客户端监听33890,192.168.2.10是SSH服务器,remote server是192.1668.2.11。
启动
测试:
SSH客户端上:
取消IE代理设置。
ssh客户端上成功访问ssh服务器web服务,server2008服务器web服务和远程桌面服务
win7客户端上:
取消IE代理设置。
注意:win7访问的目的地址是ssh客户端的地址192.168.1.10。
此时,ssh客户端相当于一台服务器,提供12345、8080和33890服务。
B、远程转发
个人版MobaXterm最多只能同时做3个隧道。
修改本地转发:
ssh服务器监听12345端口,映射到ssh客户端(192.168.1.10)的3389。ssh客户端同时也是隧道的发起方。
ssh服务器监听33890端口,映射到win7的3389。
测试:注意,应用方向为server2008向SSH服务器发起连接。
server2008:
同时访问ssh服务器12345和33890服务
192.168.2.10:12345映射到SSH客户端192.168.1.10:3389,
192.168.2.10:33890映射到SSH客户端192.168.1.11:3389,
同样因为加密隧道的原因(SSH客户端PC为隧道的发起方),server2008远程桌面访问SSH客户端PC,黑屏,自动断开。
server2008远程桌面访问win7客户端PC正常。
既然3389应用有问题,换一个应用。
在SSH客户端上开启80服务
修改远程转发,将192.168.2.10:12345映射到ssh客户端192.168.1.10:80
server2008上访问http://192.168.2.10:12345 映射后的地址为192.168.1.10:80。
备注:ssh客户端作为隧道的发起方,虽然也能作为应用服务器对外提供服务,但是个别应用服务受限---比如3389。
C、动态端口转发
SSH客户端:
SSH客户端监听10000,192.168.2.10是SSH服务器。
测试:
SSH客户端PC上:
设置IE代理地址:127.0.0.1:10000
SSH客户端分别成功访问SSH服务器和server2008的web应用
ssh客户端上:设置sockscaps64------注意代理设置端口为10000.
ssh客户端上访问server2008远程桌面
在SSH客户端PC上成功远端桌面登录server2008---192.168.2.11
可以看到是192.168.2.10-SSH服务器在使用远程桌面登录server2008
在win7 PC上:
首先需要在ssh客户端PC上配置
将监听地址设置为接口地址-不要使用127.0.0.1或者0.0.0.0
然后重启动态端口转发
win7设置IE代理的地址为:192.168.1.10:10000
win7 PC成功访问SSH服务器和server2008的web应用。
win7上远程桌面的代理设置
win7访问server2008的远程桌面服务
win7 PC通过代理成功访问server2008远程桌面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。