SSH和Netcat完成临时内网穿透
场景是这样的,前几天问运维同学要了一个测试机,只有内网IP,大部分情况够用,但是呢,偶尔也需要看看web页面什么的,怎么解决呢,正好我有个VPS,所以就想用SSH做个反向隧道,可以在家里也能访问到测试机的web服务,大部分都是临时使用,用完就关闭就好,安全风险也不是很大。连接互联网的电脑 ---> 公网IP(vps) <--ssh隧道--> 内网测试机解决
场景是这样的,前几天问运维同学要了一个测试机,只有内网IP,大部分情况够用,但是呢,偶尔也需要看看web页面什么的,怎么解决呢,正好我有个VPS,所以就想用SSH做个反向隧道,可以在家里也能访问到测试机的web服务,大部分都是临时使用,用完就关闭就好,安全风险也不是很大。
连接互联网的电脑 ---> 公网IP(vps) <--ssh隧道--> 内网测试机
解决方案比较多,现在有比较多的内网隧道工具,我这里比较原始了,但是也是法子
过程
角色
- 内网测试机 A
10.0.11.5
启动redis在 6379 - VPS公网 B
45.xx.xx.xx
ssh端口 26294,root用户 - 访问内网服务使用自己的笔记本,可以连接公网 C, 目标连接内网的 redis
1、B->A 建立反向ssh隧道,在内网测试机A
上操作
ssh -fN -R 8888:localhost:6379 root@45.xx.xx.xx -p 26294
这个命令的含义是,通过 SSH 把本地的 6379端口映射到远程vps的 8888 端口,执行命令输入密码(或者使用key做免密码登陆)
2、执行上述命令之后,在 vps
上查看
root@fendou:~# netstat -ntpl |grep 8888
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 23882/sshd: root
这个时候发现 8888 端口绑定的是 127.0.0.1
端口,在 自己的电脑上
执行 redis-cli -h 45.xx.xx.xx -p 8888
, 连不上内网的redis,现在就需要一个非常简单的方式来个端口映射,把绑定到 0.0.0.0
的某个端口映射到 8888 端口
3、 在 vps主机
上执行
nc -l -p 8001 -c "nc 127.0.0.1 8888" -vv
4、 ok,现在 vps 的 8001 端口被放到公网上了,在本地的电脑上执行
$ redis-cli -h 45.xx.xx.xx -p 8001
45.xx.xx.xx:8001> info
好了,大公告成,这里提供个思路,还有很多优化的地方,例如可以把命令封装成脚本使用,还有请大家注意 redis的安全问题。
更多推荐
所有评论(0)