实验环境
这里我们模拟了一般的内网环境
内网机器可以上网,但我们无法直接访问内网机器
其实这个场景经常遇见,只要是内网的机器我们都不可以从外面直接访问,但有时候我们又有这个需求,想远程连接
前提条件:
内网机器可以访问我们公网机器,并在公网机器上开启了ssh服务
穿透
这里我们自己想一下
前面有-R和-L命令
一个是本地监听,一个是远程监听
我们先看看-L可不可以
-L本地转发,如果绑定在内网机器,他是可以转发到公网,但这个是我们要的效果吗?我们又不能直接访问内网,转发又没用
那我们绑定在公网机器?公网机器的流量可以往这个内网上转发吗,好像是可以,但我们想想之前的操作,需要进行登录认证,但我们可以再公网机器上登录认证内网吗?不可以的吧,所以-L不可以
那就只能-R,而且由于认证的问题,只能在内网机器上执行
那么就相当于我们进行远程绑定
把流经远程主机端口流量转发到内网机器上,刚好符合我们需求
我们先登录上我们的内网机器
然后执行一下命令
ssh -R 2222:0.0.0.0:22 root@35.190.271.193
执行之后会自动登录到公网机器上,可以看到这个端口监听在127.0.0.1上
这也是这个命令的一个问题,就算你主动设置绑定的ip地址,他也是无效,始终就是127.0.0.1,但这个就限制我们只能在公网的机器上本地访问,既然公网机器到处可以访问,我们还是想让这个端口监听在0.0.0.0上
所以这个时候可以在公网上开启本地转发
ssh -L 0.0.0.0:2221:127.0.0.01:2222 root@localhost
所以现在大概是这样的流量转发
我们现在可以从任何机器访问公网ip的2221端口来达到间接访问内网22的效果
下面开始测试(只有开启转发了才可以在任意机器上连接,不开启只能在公网上访问)
ssh root@35.190.271.193 -p 2221
可以看到我们直接进入了内网的kali
经过我的测试
ssh -R 这个命令其实两个host_ip都没有用
bind_adress只会绑定在127.0.0.1
而host_adress不管是127.0.0.1,0.0.0.0都可以正常使用