利用灵雀云免费主机做反向ssh端口转发,实现内网服务器的外网访问_20160107_七侠镇莫小贝
2017-04-13 00:00
836 查看
(20160706确认:灵雀云已经停止免费服务!)
用灵雀云一段时间了,感觉还不错,免费给灵雀云做个广~告。
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
相关文章推荐
- 利用灵雀云免费主机做反向ssh端口转发,实现内网服务器的外网访问_20160107_七侠镇莫小贝
- SSH反向代理实现外网访问内网服务器
- ssh反向隧道实验——没有端口映射的前提下,让外网访问内网服务器
- 利用ssh反向代理和autossh实现从外网连接内网服务器
- 通过 SSH 端口转发实现异地内网服务器互通
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
- ngrok内网穿透,ngrok服务器搭建,实现外网访问内网服务;树莓派外网访问内网的web服务及ssh外网登录
- 利用SSH端口转发实现跨机器直接访问
- 利用Apache端口转发实现虚拟主机服务器php+jsp共用80端口
- SSH反向连接及Autossh 实现外网访问内网树莓派
- ssh 端口转发实现外网 80 端口映射到内网 80 端口
- 无需端口映射实现从外网访问内网服务器网站
- 利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问
- ssh 端口转发实现外网 80 端口映射到内网 80 端口
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
- 搭建外网可访问的web服务器及端口转发的实现
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
- 端口映射,在内网映射外网,利用P2P实现外面跨网穿透nat访问内网80网站和应用