利用SSH端口转发作内网穿透
来源:互联网 发布:朕是什么意思网络此意 编辑:程序博客网 时间:2024/05/18 11:36
转载自开源中国 零号_特工 的博客 利用SSH端口转发作内网穿透
背景
在学校里用到的都是校园网,每个校园网会动态分配一个IP地址,且连外网需要web页面登录账号,长时间不使用账号会自动下线。现在需要从外网SSH进入内网的机器进行操作,甚至还需要将内网机器上部署的机器让外网用户访问。
说明
A和B均为Linux系统,所有Linux终端的操作为了避免权限问题,全部以root用户操作。
原理
A可以访问B,C也可以访问B。这是前提条件,否则无法实现穿透。 A将自己的ssh默认的22端口反向代理到B的10020端口上,B再将本地10020端口转发到10021端口。C直接访问B的10021端口,就可以达到访问A的22端口的效果。
注意
这里B服务器必须做一次本地端口转发,因为A反向代理到B的10020端口之后,只有B本身可以访问10020端口,其他机器是访问不了的,必须做一次本地端口转发。
操作步骤
1. 保持内网机器可以一直访问外网
在linux终端下登录校园网账号其实就是发送一个post请求带上自己的用户名密码就可以实现。 在A机器上执行命令如下:
curl -d "DDDDD=用户名" -d "upass=密码" -d "0MKKey=" http://172.16.200.13
由于校园网长时间没有访问就会自动断开,为了保持外网的连接,利用crontab每10分钟执行登录一次。
编辑crontab定时任务:
crontab -e
添加一行记录
*/10 7-23 * * * curl -d "DDDDD=用户名" -d "upass=密码" -d "0MKKey=" http://172.16.200.13
对于crontab参数不明白的请自行百度。每个学校登录校园网账号的方式可能有区别,改成自己的登录方法,然后加入crontab定时任务即可。
2. 安装autossh
由于ssh连接长时间不使用会自动断开,为了保持ssh连接需要安装autossh,它会自动监听ssh连接的状态,自动重连。利用yum可以直接安装。
yum install autossh
3. 端口转发
在A机器上将A的22端口反向代理到B的10020端口上。A执行:
autossh -M 10019 -f -CNR -p 22 '*:10020:127.0.0.1:22' root@120.45.XXX.XXX
-M 表示autossh监听ssh连接状态的端口
-f 后台运行autossh
后面接的是SSH的命令。SSH常用命令参数解释如下:
-f 后台运行
-C 允许压缩数据
-N 不执行任何命令
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
-p 转发服务器B的SSH登录端口号,默认为22
接下来,在B机器上将10020端口本地转发到10021端口。B执行:
ssh -fCNL "*:10021:localhost:10020" localhost
B机器不需要安装autossh,因为本地端口转发的ssh连接不会自动断开。
最后,在C机器上执行:
ssh -p 10021 root@120.45.XXX.XXX
输入A机器root密码就可以登录A机器,达到内网穿透的目的。如果C机器是windows系统可以安装Xshell等软件实现访问。
总结
本文的方法不仅仅可以将A的22号端口映射到外网,也可以将其他端口,如80端口等,映射到外网。如果A机器80端口部署了一个网站,那么通过本文的方法,外网即可访问该网站。
- 利用SSH端口转发作内网穿透
- SSH端口转发与内网穿透
- 利用ssh端口转发实现邮件转发
- SSH隧道与端口转发及内网穿透
- SSH隧道与端口转发及内网穿透
- SSH隧道与端口转发及内网穿透
- SSH隧道与端口转发内网穿透
- SSH隧道与端口转发及内网穿透
- SSH隧道与端口转发内网穿透
- SSH隧道与端口转发内网穿透
- 【转载】SSH隧道与端口转发及内网穿透
- SSH隧道端口转发及内网穿透
- SSH隧道与端口转发及内网穿透
- 利用SSH端口转发功能实现X转发
- socat端口转发-穿透网络
- 使用SSH反向隧道进行内网穿透(远程端口转发)
- 利用ssh的端口转发实现SOCKS5代理
- ssh端口转发
- 好网站推荐
- springmvc里的转发和重定向
- html5第八课时,灵活布局,flex
- Win10 64位系统设置JAVA环境
- html5第八课时,flex的基础应用
- 利用SSH端口转发作内网穿透
- 框架学习---1、angular简易demo~~购物车
- 用C语言模仿Python函数
- spring boot(4)-html和templates
- HDU 1702 ACboy needs your help again!(栈和队列的试用)
- android webview native与JavaScript相互调用 java与JavaScript相互调用
- Java异常体系结构
- caffe SilenceLayer
- c语言环境下如何创建一个外部函数