在我们实验一的场景下,首先要满足的是防火墙上必须打开22端口,但是在现实生活中,企业处于安全考虑,一般是不会打开防火墙,只允许出不允许进。所以,当防火墙的端口没有打开的时候,我们要怎么办呢?这就要用到我们接下来要说的远程转发了:
命令:-R sshserverport:remotehost:remotehostport sshserver
说明:sshserverport 被转发机器开启的端口号
remotehost 最终连接机器的IP地址
remotehostport 被转发机器的端口号
sshserver 被转发机器的IP地址
同样的,我们以实验来具体说明我们的远程转发:
实验二、实现SSH端口转发——远程转发
背景:企业内部C服务器只允许telnet连接(23端口)访问,不允许外部直接访问,B服务器是一个ssh服务器;有一个用户需要从外部连接到企业内部的C服务器。
原理:B机器访问A用户,给A用户转发
机器:rhel5模拟A用户,centos6模拟B机器,centos7模拟C机器
图示如下:
实验步骤:
1)模拟C机器不允许A用户连接,并且开启B机器的telnet服务端口23。
在centos7上输入以下口令:
iptables -A INPUT -s 192.168.191.55 -j REJECT
此时,从rhel5用ssh命令连接centos7,是拒绝的:
同时,我们还要开启7的telnet服务端口23:
systemctl start telnet.soc ket
用ss -ntl命令可以查看的服务端口是否已开启
2)开启隧道转发(telnet隧道)
这一次,由于防火墙完全关闭,外部的设备连接不进来,所以我们要通过B机器去连接A用户的机器,因此,我们的开启隧道命令要在B机器(centos6)上运行:
首先,我们要确定一下centos6上开启了哪些端口:
然后,我们选择一个没有被开启的端口开启隧道,进行实验:
同样的,在这里,我们可以使用ps aux来查询后台运行的进程。也可以通过ss -nt查看接口连接情况:
3)在rhel5上输入以下命令,用9527端口连接自己:
telnet 127.0.0.1 9527
此时,我们可以查看一下centos6和centos7的连接情况:
至此,我们已经实现了A用户在公司外部远程连接C机器的需求,接下来我们就来讲一讲实现过程: