zoukankan      html  css  js  c++  java
  • [SSH服务]——SSH端口转发

    实验拓扑图

    实验描述

            假设有三台主机A、B、C。B和A、C可以连通,AC两台主机不能连通。

            这时候可以用本地端口转发,来实现A和C通过B来连通。

            实验中,为了构造上述环境,我们使用三台虚拟机,其网络环境设置如拓扑图所示:

               (1) 主机A :eth1(172.16.10.1/24)

               (2) 主机B: eth0(172.16.10.3/24)     eth1(172.16.20.1/24)

               (3) 主机C: eth0(172.16.20.1/24)

    实验与验证

    1. 确保B和A、C的连通,A、C不能连通(符合实验环境)

        

        

    2. 在A、B的ssh配置文件/etc/ssh/sshd_config中开启允许转发的选项,并重启ssh服务

    # vim /etc/ssh/sshd_config
       GatewayPorts        yes
       AllowTcpForwarding  yes
    # service sshd restart

    3. 在主机C安装httpd并启动http服务,为了更好的验证我们在主机C的站点主目录下写一个“小文件”

    # yum install httpd -y
    # vim /var/www/html/index.html
      hello,I'm 172.16.20.2
    # service httpd start

    4. 在主机A上执行命令:

    # ssh -l  root  -L 172.16.10.159000:172.16.20.2:80  172.16.10.3

        参数-L后面总共有四个用冒号分割的值,分别是 '本地地址:本地端口:目标主机:目标主机端口'

        这条命令的意思是:

       指定SSH绑定本地主机A(172.16.10.1)的59000端口,转发到目标主机C(172.16.20.2)的80端口。并指定由主机B(192.16.10.3)来转发。

        执行结果:

       

    5. (注意不要退出上一步骤的命令)在A新打开一个终端(Ctrl+Alt+F2)来验证就好,执行命令:

    # curl  http://172.16.10.1:59000

         执行结果:

        

          这说明:

          我们连接了本地主机A的59000端口,就等于连上了主机C 172.16.20.2的80端口。


    补充

    1. 本实验参考了文章:http://my.oschina.net/guol/blog/115235

    2. 实验过程中要注意防火墙的设置,最好 # iptables -F 清除一下防火墙规则

        

          

  • 相关阅读:
    ARM Linux 3.x的设备树(Device Tree)
    ubuntu 14.04 编译内核出现unable to locate package ncurses-devel 问题的解决
    Device Tree Usage( DTS文件语法)
    Ubuntu 14.04中gedit打开文件出现中文乱码问题
    Jenkins中集成jmeter-maven插件
    Linux(centos6.5)下安装jenkins
    IM系统架构设计之浅见
    一些常用软件的网络端口协议分类介绍
    Jenkins执行批处理文件失败
    八大持续集成工具
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/5621459.html
Copyright © 2011-2022 走看看