Linux下的内网穿透+访问内网网站(利用阿里云)

本人亲测

两台主机设置:内网:本地ubantu16,外网:阿里云centos7.4(点击购买一台阿里云实例

前提:本地和阿里云:关闭防火墙,打开端口转发生效

vim /etc/sysctl.conf

写入net.ipv4.ip_forward=1

生效sysctl -p

阿里云安全组 22  80

以下干货

1.本地主机:ssh-keygen   生成秘钥   公钥丢在阿里云的authorized_keys文件里 备注ssh秘钥生成详解请转到Linux的ssh免密登陆_2018_like菜的博客-CSDN博客

2.本地主机命令 :ssh -f -g -R 阿里云ip:6666:本地ip:18080 root@阿里云ip "vmstat 60"

ssh -f -g -R 4.1.2.3:6666:192.168.0.162:18080 root@4.1.2.3 "vmstat 60"

-C,是进行数据压缩。

-f,是后台认证用户/密码,通常和-N连用,不用登录到远程主机。只有当提示用户名密码的时候才转向前台。

-N,是不执行远端命令,在只是端口转发时这条命令很有用处。

-g ,在-L/-R/-D参数中,是允许远端主机连接本地转发端口,如果不加这个参数,只允许本地主机建立连接。

-L,则是将本地端口映射到远端主机端口。本地端口:目标IP:目标端口---“访问本地端口,实际访问远程端口”

-R,表明是将远端主机端口映射到本地端口。本地端口:目标IP:目标端口--“访问远程端口,实际访问本地端口”

-p  被登录的ssd服务器的sshd服务端口。

-D  指定一个本地机器 “动态的'’ 应用程序端口转发.。

"vmstat 60"为啥加这个命令 防止长时间内网穿透隧道中断  60 代表60秒运行一次这个命令 ,还可以用其它命令 如top

在ssh的命令上加上-o TCPKeepAlive=yes来开启 防止中断 试了下 不知道操作什么  反正效果不行

本地网站

3.本地装了个tomcat服务地址:192.168.0.162:18080

4.阿里云上命令curl 127.0.0.1:6666看到下图说明内网穿透转发成功了

5.打开阿里云安全组6666 ,浏览器公网ip+端口号访问tomcat---失败

6.在阿里云安装NGINX命令,yum install -y nginx

7.vim /etc/nginx/nginx.conf配置反向代理,把server配置里如下:

8.坚持nginx -t 是否错误,重启nginx

9.浏览器打开阿里云公网ip :4.1.2.3 访问成功

成功访问内网tomcat,有更好方法防止ssh中断可以说,我用的是crt容易中断,xshell可能不会,不要exit或者关闭本地终端或者xshell或者crt否则,大概率断掉内网穿透

使用

screen 命令可以没试过

yum install -y screen

用于命令行终端切换   使用这个工具命令保证ssh断掉 命令也在运行

a、会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,
用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。
setsid 命令好像也可以没试过

映射本地22端口,本地命令

ssh -f -g -R 4.1.2.3:5555:192.168.0.162:22 root@47.107.237.53 vmstat 60

阿里云ssh连接:ssh localhost -p 5555 可以连接到本地(不输入密码,阿里云生成ssh公钥丢到本地authorized_keys文件里)

以下未测试

检查隧道状态

有些时候隧道会因为一些原因通信不畅而卡死,例如:由于传输数据量太大,被路由器带入stalled状态。这种时候,往往SSH客户端并不退出,而是卡死在那里。一种应对方法是,使用SSH客户端的ServerAliveInterval和ServerAliveCountMax选项。 ServerAliveInterval会在隧道无通信后的一段设置好的时间后发送一个请求给服务器要求服务器响应。如果服务器在 ServerAliveCountMax次请求后都没能响应,那么SSH客户端就自动断开连接并退出,将控制权交给你的监控程序。这两个选项的设置方法分别是在ssh时加入-o ServerAliveInterval=n和-o ServerAliveCountMax=m。其中n, m可以自行定义。

如何将端口绑定到外部地址上

使用上面的方法,映射的端口只能绑定在127.0.0.1这个接口上。也就是说,只能被本机自己访问到。如何才能让其他机器访问这个端口呢?我们可以把这个映射的端口绑定在0.0.0.0的接口上,方法是加上参数-b 0.0.0.0。同时还需要打开SSH服务器端的一个选项-GatewayPorts。默认情况下它应当是被打开的。如果被关闭的话,可以在/etc /sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它。

反向隧道技术

情景:节假日需要回公司加班。但是公司是内网,使用NAT,所以没办法连回去。

现在公司机器(LAN_ip)上执行

ssh -NfR 2222:localhost:22 home_ip

-R : 建立反向连接 将 home_ip port转发

现在,到home_ip上面
ssh localhost -p 2222
就跑在NAT后面的公司机器。就是后门了。灰鸽子木马用的也是反向链接。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值