ssh端口转发

一、ssh总结(思维导图)

这里写图片描述

SSH端口转发
  解释
    SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。
    但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发
    ,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”
    (tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通
    道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均
    能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此
    同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许
    SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯
  SSH 端口转发能够提供两大功能:
    • 加密 SSH Client 端至 SSH Server 端之间的通讯数据
    • 突破防火墙的限制完成一些之前无法建立的 TCP 连接
  应用
    选项:
      -f 后台启用
      -N 不打开远程shell,处于等待状态
      -g 启用网关功能
      -L  本地转发
      -R 远程转发
      -D  动态端口转发
      -X   X协议转发
    本地转发:
    远程转发: 
    动态端口转发:
    X 协议转发

1.端口转发——本地转发

这里写图片描述

本地转发:
  -L localport:remotehost:remotehostport sshserver
    外部为客户端,内部为服务端;必须打开防火墙的ssh端口
  示例
    sshL 9527:telnetsrv:23 -N sshsrv
    telnet 127.0.0.1 9527
  解释:
    当访问本机的9527的端口时,被加密后转发到sshsrvssh服务,再解密被转发到telnetsrv:23
  数据流向
    data  <---> localhost:9527  <---> localhost:XXXXX <---> sshsrv:22  <---> sshsrv:YYYYY  <---> telnetsrv:23

2.端口转发——远程转发

这里写图片描述

远程转发: 
  -R sshserverport:remotehost:remotehostport sshserver
    防火墙内部是客户端,外部是服务端;
    防火墙策略(可以出,不可近)不必进行更改
    ·  命令在内部的ssh主机上敲
  示例:
    sshR 9527:telnetsrv:23N sshsrvsshsrv侦听9527端口的访问,如有访问,就加密后通过ssh
  解释:
    服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
  数据流向:
    Data <---> sshsrv:9527  <---> sshsrv:22  <---> localhost:XXXXX  <---> localhost:YYYYY  <--->  telnetsrv:23

3.端口转发——动态端口转发&X协议转发

这里写图片描述
动态端口转发

动态端口转发:
  当用firefox访问internet时,本机的1080端口做为代理服务器, firefox的访问请求被转发到sshserver上,由sshserver替之访问internet
  在本机firefox设置代理socket proxy:127.0.0.1:1080
  ssh -D 1080 root@sshserver

X协议转发

X 协议转发
  所有图形化应用程序都是X客户程序
    • 能够通过tcp/ip连接远程X服务器
    • 数据没有加密机,但是它通过ssh连接隧道安全进行
  ssh -X user@remotehost gedit
    remotehost主机上的gedit工具,将会显示在本机的X服务器上
    传输的数据将通过ssh连接加密
  注意:
    c/s和ssh的c/s相反

二、实验——本地转发

1.前提:

主机 A和B可相互通过ssh服务访问,B和C可相互通过telnet访问;但是 A 不可以访问C

2.实现方式:

A使用B当作跳板,访问C(安全访问)
    A--B 走ssh协议,在ssh协议内封装telnet协议
    B--C 走telnet协议,B替A访问

3.准备

将A的ip地址加入C的防火墙策略
 iptables  -A INPUT -s 172.17.0.116  -j   REJECT 

这里写图片描述
这里写图片描述

4.实验

开启C的telnet服务

#在Centos7上
 systemctl -l status telnet.socket 
在centos6上
    1.先开启 xinet服务
            service xinetd start
    2.再修改/etc/xinetd.d/telnet
            distable yes 改为no
    3.chkconfig telnet on

在A主机上

#访问9527 端口时:去访问172.17.16.2的23端口;通过与172.17.1.116的隧道
 ssh -L 9527:172.17.16.2:23 -fN 172.17.1.116
#访问自己的9527端口
 telnet 127.0.0.1 9527

三、实验——远程转发

前提

A ——>防火墙 | B<–> C

A 主机在防火墙外;B C在防火墙内;A不能通过22端口穿过防火墙
    防火墙关闭22端口

思路:

B访问A ,建立隧道;B作为ssh客户端,A作为ssh服务端

实验

在B主机
# 建立与172.17.0.116之间的隧道;转发172.17.0.116 的9527 到 172.17.16.2的23端口
ssh -R 9527:172.17.16.2:23  -fN 172.17.0.116
在A主机
telnet 127.0.0.1 9527

这里写图片描述
这里写图片描述

四、实验——动态转发

A不能访问C(或者其他地址例如谷歌) ;可以使用B做代理;去访问不能访问的目标
这里写图片描述
这里写图片描述

实验

在A上
#访问本机的1080时,是使用172.17.1.116做代理
ssh -D 1080 -fN 172.17.1.116  
#通过本机的socks5(1080端口) ;访问172.17.0.116
curl  --socks5 127.0.0.1 172.17.0.116

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值