利用灵雀云免费主机做反向ssh端口转发,实现内网服务器的外网访问_20160107_七侠镇莫小贝
2016-01-07 17:05
861 查看
用灵雀云一段时间了,感觉还不错,免费给灵雀云做个广~告。
http://www.alauda.cn/ 现在每个月送29元优惠券,可以满足使用一个XS(500M内存) 或两个XXS (256M内存) 型免费主机的费用。
毕竟是免费的,在上面跑需要大内存的应用就不要想了,但做个反向ssh端口映射还是不错的,这样你的内网服务器就可以映射到外网,还有了个免费域名,推荐!
步骤:
1.在你的Linux服务器上运行:
ssh-keygen 一路回车即可
ssh-copy-id "-p 10230 root@42.139.49.130" 这样登录到灵雀云服务器就不再需要输入密码了。注意ssh-copy-id 指定端口的写法。
上面两条命令执行一次即可。
ssh -C -f -N -g -R 9090:localhost:8080 root@42.139.49.130 -p10230 将本地的8080服务端口映射到灵雀云服务器的8080端口
此时,你到云主机上看,应该开发了9090端口。
查看端口开放情况: netstat -lnp
但9090端口绑定在了127.0.0.1上,无法被外网访问到。
没事,将云服务器的9090端口映射到8080即可。
2. 在灵雀云服务器上运行:
ssh-keygen 一路回车即可
ssh-copy-id root@localhost 实现ssh自己时不需要密码
上面两条命令执行一次即可。
ssh -CNfg -L 8080:localhost:9090 root@localhost 将9090端口映射到8080
此时,netstat -lnp 看一下,已经在0.0.0.0上开放了8080端口。
访问:http://云主机域名 ,即可看到你的内网Linux服务器8080端口上的东西。
注意:访问http://云主机ip是没用的,必须用域名。
3. 有时候由于网络原因,建立的连接会断开,这时候需要重新运行上面两条ssh命令,比较麻烦。
其实,既然已经可以无密码登录到灵雀云服务器了,那所有的命令都可以在你的Linux服务器上自动执行了。
写个脚本:restart_portmap_per300.sh 定期检测(300秒)端口映射是否正常,如不正常,则重新建立连接
让他在后台运行:nohup ./restart_per300.sh &
看日志方法:tail -f nohup.out
#!/bin/bash
while true;do
# 检测一下端口映射是否正常。即检测yourapp/index.html是否能正常访问。
wget -q -t 1 -T 3 --spider 42.139.49.130/yourapp/index.html
if [ $? -eq 0 ]
then
echo "`date '+%Y%m%d %H%M%S'` index.html检测...存在! 不重启ssh!"
sleep 300
continue
else
echo "`date '+%Y%m%d %H%M%S'` index.html检测...不存在! 可能网络连接有问题,需要重启ssh!"
echo " --`date '+%Y%m%d %H%M%S'` restart remote ssh server"
ssh -tt -p 10230 root@42.139.49.130 /root/restart_portmap.sh
sleep 5
echo " --`date '+%Y%m%d %H%M%S'` restart local ssh server"
ps -ef | grep localhost | grep root | grep -v grep | awk {'print $2'} | xargs kill -9
sleep 1
ssh -C -f -N -g -R 9090:localhost:8080 root@42.139.49.130 -p10230
echo " --`date '+%Y%m%d %H%M%S'` restart ssh server OK! sleep 300 ..."
echo ""
sleep 300
fi
done
灵雀云服务器上的脚本:(做9080到8080端口映射的,映射前先把旧进程杀掉,这里根据端口来查出进程id)
restart_portmap.sh
#!/bin/bash
echo "现在时间:`date '+%Y%m%d %H%M%S'`"
echo "restart ssh server"
kill -9 $(netstat -tlnp | grep 8080 | awk '{print $7}' | awk -F '/' '{print $1}')
kill -9 $(netstat -tlnp | grep 9090 | awk '{print $7}' | awk -F '/' '{print $1}')
sleep 1
ssh -CNfg -L 8080:localhost:9090 root@localhost
http://www.alauda.cn/ 现在每个月送29元优惠券,可以满足使用一个XS(500M内存) 或两个XXS (256M内存) 型免费主机的费用。
毕竟是免费的,在上面跑需要大内存的应用就不要想了,但做个反向ssh端口映射还是不错的,这样你的内网服务器就可以映射到外网,还有了个免费域名,推荐!
步骤:
1.在你的Linux服务器上运行:
ssh-keygen 一路回车即可
ssh-copy-id "-p 10230 root@42.139.49.130" 这样登录到灵雀云服务器就不再需要输入密码了。注意ssh-copy-id 指定端口的写法。
上面两条命令执行一次即可。
ssh -C -f -N -g -R 9090:localhost:8080 root@42.139.49.130 -p10230 将本地的8080服务端口映射到灵雀云服务器的8080端口
此时,你到云主机上看,应该开发了9090端口。
查看端口开放情况: netstat -lnp
但9090端口绑定在了127.0.0.1上,无法被外网访问到。
没事,将云服务器的9090端口映射到8080即可。
2. 在灵雀云服务器上运行:
ssh-keygen 一路回车即可
ssh-copy-id root@localhost 实现ssh自己时不需要密码
上面两条命令执行一次即可。
ssh -CNfg -L 8080:localhost:9090 root@localhost 将9090端口映射到8080
此时,netstat -lnp 看一下,已经在0.0.0.0上开放了8080端口。
访问:http://云主机域名 ,即可看到你的内网Linux服务器8080端口上的东西。
注意:访问http://云主机ip是没用的,必须用域名。
3. 有时候由于网络原因,建立的连接会断开,这时候需要重新运行上面两条ssh命令,比较麻烦。
其实,既然已经可以无密码登录到灵雀云服务器了,那所有的命令都可以在你的Linux服务器上自动执行了。
写个脚本:restart_portmap_per300.sh 定期检测(300秒)端口映射是否正常,如不正常,则重新建立连接
让他在后台运行:nohup ./restart_per300.sh &
看日志方法:tail -f nohup.out
#!/bin/bash
while true;do
# 检测一下端口映射是否正常。即检测yourapp/index.html是否能正常访问。
wget -q -t 1 -T 3 --spider 42.139.49.130/yourapp/index.html
if [ $? -eq 0 ]
then
echo "`date '+%Y%m%d %H%M%S'` index.html检测...存在! 不重启ssh!"
sleep 300
continue
else
echo "`date '+%Y%m%d %H%M%S'` index.html检测...不存在! 可能网络连接有问题,需要重启ssh!"
echo " --`date '+%Y%m%d %H%M%S'` restart remote ssh server"
ssh -tt -p 10230 root@42.139.49.130 /root/restart_portmap.sh
sleep 5
echo " --`date '+%Y%m%d %H%M%S'` restart local ssh server"
ps -ef | grep localhost | grep root | grep -v grep | awk {'print $2'} | xargs kill -9
sleep 1
ssh -C -f -N -g -R 9090:localhost:8080 root@42.139.49.130 -p10230
echo " --`date '+%Y%m%d %H%M%S'` restart ssh server OK! sleep 300 ..."
echo ""
sleep 300
fi
done
灵雀云服务器上的脚本:(做9080到8080端口映射的,映射前先把旧进程杀掉,这里根据端口来查出进程id)
restart_portmap.sh
#!/bin/bash
echo "现在时间:`date '+%Y%m%d %H%M%S'`"
echo "restart ssh server"
kill -9 $(netstat -tlnp | grep 8080 | awk '{print $7}' | awk -F '/' '{print $1}')
kill -9 $(netstat -tlnp | grep 9090 | awk '{print $7}' | awk -F '/' '{print $1}')
sleep 1
ssh -CNfg -L 8080:localhost:9090 root@localhost
相关文章推荐
- 用Zoho Recruit轻松发面试反馈
- tableViewcell 复选框
- 【转】39个让你受益的HTML5教程
- web服务器 字体.svg/.woff/.woff2 404错误 解决方案
- AssetsLibrary将本地图片转成URL,,全部复制粘贴即可。
- Tornado Web 防止xsrf攻击
- java左移右移运算符
- 2016/1/7 菱形图 上下两个外循环 各自套三个内循环 规律总结
- 自动获取地理位置
- Java线程池
- Ubuntu系统中安装MongoDB及其启动命令mongod的教程
- mysql,show processlist,查询一直sending data,影响查询性能
- Jekyll:解决Auto-regeneration can no longer be set from your configuration file(s)
- Git学习
- 让python类的方法或特性变成私有
- IAR version and Crack Downloads
- JPA游离态问题
- css3-动画
- android BroadcastReceiver动态监听网络连接
- 多表连接查询