SSH实验

您所在的位置:网站首页 查看本机ssh端口 SSH实验

SSH实验

#SSH实验| 来源: 网络整理| 查看: 265

端口转发概述

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

加密 SSH Client 端至 SSH Server 端之间的通讯数据。 突破防火墙的限制完成一些之前无法建立的 TCP 连接。

角色定义

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

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

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

实验一:本地转发

主要功能: 加密 SSH Client 端至 SSH Server 端之间的通讯数据 突破防火墙的限制完成一些之前无法建立的 TCP 连接

命令: ssh -Nf -L [local_A_address]:local_A_port:target_C_server:target_C_port via_B_server 参数: -N,不执行命令 -f,后台执行 -L,local本地端口转发 local_A_address: 127.0.0.1 - 默认,只能本机使用这个端口转发 也可以是本机的IP地址,同时其他人可以使用这个IP来使用这个端口转发 via_B_server:中间服务器 应用: A---能访问------>B-------能访问------>C A---不能访问----------------------------->C A---通过本机端口,以B的名义访问-->C

本地转发:     -L localport:remotehost:remotehostport sshserver 选项:     -f 后台启用     -N 不打开远程shell,处于等待状态     -g 启用网关功能

在这里插入图片描述 ssh端口转发:远程到centos7(192.168.39.104)上的23端口(开启telnet服务会自动打开23端口)

用ssh加密的协议封装其他的不加密协议telnet,从而实现安全传输

实验图如上:

centos6: 192.168.39.101(外网客户端)

centos8: 192.168.39.102(内网中类似跳板机)还有一个共用IP地址 192.168.39.8

centos7: 192.168.39.104(内网telnet服务端)   实现过程:先再centos6和centos8之间利用ssh协议连接,创建一个隧道,里面走的是telnet,因为ssh协议是加密的,把telnet封装在其内部,在到达内网centos8主机时会自动的解封装在由centos8主机转发到主机centos7上从而实现了加密连接通讯. 在外网客户端和内网服务器端都要提前安装好

[root@kaivi6 ~]#yum install telnet [root@kaivi6 ~]#yum install telnet-server [root@centos7 ~]#yum install telnet [root@centos7 ~]#yum install telnet-server #systemctl start telnet.socket 并且启功该服务,这是会自动开启23端口号

注意:配置的时候是在 centos6: 192.168.39.101(外网客户端)

开启本地一个端口9527(先要确保这个端口没有人用,可以用ss -ntl 命令查看端口号),先和主机里建立一个隧道连接 在这里插入图片描述 在centos8(内网中类似跳板机)主机上查看连接情况,此时通道已经建立好了 在这里插入图片描述 在centos7(内网中telnet服务端)查看一下23端口是否被连接,此时没有被任何人连接 在这里插入图片描述 这时就可以使用telnet 连接本地的9527端口通过隧道的连接间接的访问服务端了 这里的连接隧道是连接自己本机的隧道 所以连接的是本机 127.0.0.1 和之前我们自定义的端口号 可以用命令 ss -ntl 查看到本机地址 连接时候需要用服务机的普通用户登入。下图显示已经成功连接登入 在这里插入图片描述 在服务端查看一下端口连接情况:此时是被centos7(内网中telnet服务端)主机连接,实际上是centos6(外网客户端端)主机正在访问,下面看一下centos7(内网中telnet服务端)主机状态 看到图中的地址为192.168.39.8是因为在主机centos8(内网中类似跳板机)同一个网卡中配置了2个IP 地址,所以显示连接的为192.168.39.8 在这里插入图片描述 在这里插入图片描述 此时在centos8(内网中类似跳板机)上查看一下端口连接情况,如图:此时centos8(内网中类似跳板机)主机有两个角色:1、对于centos6(外网客户端端)主机来说它是centos6(外网客户端端)主机ssh的服务端 2、对于centos7(内网中telnet服务端)主机telnet服务端来说它是telnet的客户端

在这里插入图片描述

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

远程转发:   主要命令: -R sshserverport:remotehost:remotehostport sshserver 示例: ssh –R 9527:telnetsrv:23 –Nf sshsrv 让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23

因在公司里都有防火墙,规则一般都是不允许从外面主动发起请求,所以现在ssh client和server端角色互换以实现   实验过程: 让sshsrv侦听8888端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23 在这里插入图片描述 实验图如上:

centos6: 192.168.39.101(外网客户端)

centos8: 192.168.39.102(内网中类似跳板机)还有一个公用IP地址 192.168.39.8

centos7: 192.168.39.104(内网telnet服务端)

准备好实验环境:

[root@kaivi6 ~]#yum install telnet [root@kaivi6 ~]#yum install telnet-server [root@centos7 ~]#yum install telnet [root@centos7 ~]#yum install telnet-server #systemctl start telnet.socket 并且启功该服务,这是会自动开启23端口号 centos6 telnet服务起不来 参考:https://blog.csdn.net/weixin_34378922/article/details/92100530

注意:配置的时候是在 centos8: 192.168.39.102(内网中类似跳板机)

实验步骤:在主机 centos8: 192.168.39.102(内网中类似跳板机)主动发起ssh请求到centos6: 192.168.39.101(外网客户端)主机建立隧道的连接

[root@centos8 ~]#ssh -R 8888:192.168.39.104:23 192.168.39.101 -fN The authenticity of host '192.168.39.101 (192.168.39.101)' can't be established. RSA key fingerprint is SHA256:eW09nANmhy6Dt11/tP9NYkq7+tU1VZYd3X9J24b8iQk. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.39.101' (RSA) to the list of known hosts. [email protected]'s password:

可以看到已经连接到了centos6: 192.168.39.101(外网客户端)主机 在这里插入图片描述 这里为什么是ip192.168.39.8 连接centos6 在前面提及过 这是因为一个网卡中同时存在2个ip地址导致,不影响实验。

此时隧道连接已经建立了,回到主机centos6: 192.168.39.101(外网客户端)上查看一下连接情况: 可以看到连接之后已经有了8888端口 在这里插入图片描述 在centos6: 192.168.39.101(外网客户端)主机上发起telnet请求,如图,此时已经可以telnet到远程服务端了 注意:这个时候访问的是自己本机地址(127.0.0.1)的端口号:8888 在这里插入图片描述 在主机centos7: 192.168.39.104(内网telnet服务端)服务端和主机 centos8: 192.168.39.102(内网中类似跳板机)上查看连接情况如下: 在这里插入图片描述 前面一个是连接之前,后面一个为连接之后。

centos8: 192.168.39.102(内网中类似跳板机):此时也是两种角色,一个是ssh的客户端,另一个是telnet的客户端 在这里插入图片描述

实验三:动态端口转发 命令: ssh -Nf -D [local_A_address]:local_A_port via_B_server 参数: -D,dynamic,动态端口转发 应用: 本地和远程端口转发,都限定了目标服务器以及目标服务器的端口; 而动态端口转发,A把B作为了自己的全权代理,不限定目标服务器及其端口; 这里要求在A上,做下代理设置,比如浏览器的代理设定为自己的IP:PORT; 本地端口转发和远程端口转发,其实都可看着是动态端口转发(代理)的子集; 三者和一般代理的目的和场景都一致,区别在于这里自己A和代理服务器B之前的所有连接都是基于加密的SSH。 可以用于科学上网

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

实验过程:因防火墙的原因国内的主机不能直接访问国外的一些网站,所以我们只能通过一些代理的服务器,如亚马逊云主机等(这里指主机 centos8: 192.168.39.102(没有被拒绝的中间机器))间接的去访问这些网站

centos6: 192.168.39.101(被拒绝客户端)

centos8: 192.168.39.102(没有被拒绝的中间机器)还有一个公用IP地址 192.168.39.8

centos7: 192.168.39.104(网页服务器端)  实验前准备工作:  在centos7: 192.168.39.104(网页服务器端) 安装httpd服务并且打开服务

[root@centos7 ~]#yum install httpd [root@centos7 ~]#systemctl start httpd.service

为了模拟真实一些,这里在主机centos7: 192.168.39.104(网页服务器端)服务端配置一条防火墙策略,禁止主机 centos6: 192.168.39.101(被拒绝客户端)直接访问

centos6: 192.168.39.101(被拒绝客户端)在添加策略前是可以访问centos7: 192.168.39.104(网页服务器端)的。 在这里插入图片描述 在这里插入图片描述 centos7: 192.168.39.104(网页服务器端)加了策略之后centos6: 192.168.39.101(被拒绝客户端)的访问情况: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 但是主机centos8: 192.168.39.102(没有被拒绝的中间机器)可以正常访问,可以正常服务的网页centos7: 192.168.39.104(网页服务器端) 在这里插入图片描述

在 centos6: 192.168.39.101(被拒绝客户端)主机开一个端口通过ssh协议连接到centos8: 192.168.39.102(没有被拒绝的中间机器)主机 注意:这里是通过ssh协议连接是安全的。是在centos6: 192.168.39.101(被拒绝客户端)进行操作的。 在这里我们要事先找一个没有人用的端口,这里我们以9527为例子 在这里插入图片描述 上图中显示9527端口是没有人使用的,所以我们可以用9527这个端口来开启一个动态端口: 在这里插入图片描述 在centos8: 192.168.39.102(没有被拒绝的中间机器)主机查看连接: 在这里插入图片描述 访问centos7: 192.168.39.104(网页服务器端): 通过建立的连接,在本机访问9527端口即可以通过隧道连接通过代理主机centos8: 192.168.39.102(没有被拒绝的中间机器去访问服务端(命令行使用代理访问如下),图形界面需要在web浏览器配置里设置代理服务器的ip后再进行访问: 在这里插入图片描述 图形界面访问如图:

在虚拟机本机中: init 5 》Firefox 》Preferences 》Network 》Settings》配置本机地址和端口

在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3