自己动手,丰衣足食!网上的很多教程都有不少坑,做一个优化的流程记录
阿里云上的centos服务器,ssh连接(xshell),ftp连接(filezilla),以及解析到服务器的域名(这里以xyz.com为例)
安装gcc
yum install gcc -y
安装git
yum install git -y
安装go环境
yum install golang
获得git源码
git clone https://github.com/tutumcloud/ngrok.git ngrok
生成证书(xyz.com替换成你自己的域名!!! )
export NGROK_DOMAIN="xyz.com"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
替换证书(逐行输入!!!每行都要按y进行确认)
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
编译源码生成服务端(放在服务器上)
GOOS=linux GOARCH=amd64 make release-server
编译源码生成客户端(使用ftp软件下载到windows上,生成目录为~/ngrok/bin/windows_amd64/)
GOOS=windows GOARCH=amd64 make release-client
开启ngrok服务(注意xyz.com替换为自己的域名!!!)
记得在服务器安全组开启相应的入网端口
cd ngrok
sudo ./bin/ngrokd -domain="xyz.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &
在之前下载到window上的ngrok.exe文件旁边新建一个文本文档,输入配置程序,保存后重命名为ngrok.cfg
配置程序为:(注意xyz.com替换为自己的域名!!!)
server_addr: "xyz.com:8083"
trust_host_root_certs: false
tunnels:
http:
subdomain: "www"
proto:
http: "80"
https:
subdomain: "www"
proto:
https: "443"
ssh:
remote_port: 22222
proto:
tcp: "22"
mstsc:
remote_port: 33899
proto:
tcp: "3389"
创建可执行脚本:
在之前下载到window上的ngrok.exe文件旁边新建一个文本文档,输入脚本程序,保存后重命名为ngrok.bat
脚本程序为(如果上面的端口配置程序里配置了更多的端口,记得添加)
ngrok.exe -config=ngrok.cfg start http https ssh mstsc
双击ngrok.bat即可启动
在ngrok程序目录(/root/ngrok)下新建启动脚本start.sh(.sh即linux中的shell脚本程序)
vi start.sh
输入启动脚本(注意xyz.com替换为自己的域名!!!)
nohup /root/ngrok/bin/ngrokd -domain="xyz.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &
给 start.sh 文件权限
chmod 755 /root/ngrok/start.sh
在/etc/rc.d/init.d目录下新建启动文件
sudo vi /etc/rc.d/init.d/ngrok
输入自启动服务文件
#!/bin/sh
#chkconfig:2345 70 30
#description:ngrok
### BEGIN INIT INFO
# Provides:ngrok
# Required-Start:
# Required-Stop:
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description: Start or stop the ngrok Proxy.
### END INIT INFO
ngrok_path=/root/ngrok
case "$1" in
start)
echo "start ngrok service.."
sh ${ngrok_path}/start.sh
;;
*)
exit 1
;;
esac
给ngrok自启动服务文件运行权限
chmod 755 /etc/rc.d/init.d/ngrok
注册ngrok服务自启动
cd /etc/rc.d/init.d
chkconfig --add ngrok
开启服务
service ngrok start
查看自启动的服务状态
chkconfig
如果如下图所示,2345选项都是on,则开启服务成功
重启系统
reboot
查看服务当前状态
systemctl status ngrok
[root@iZ6m61chmsnr61Z init.d] service ngrok start
env: ‘/etc/init.d/ngrok’: No such file or directory
Answer:
这是因为在windows下保存或者建立的脚本文件,windows中换行符为/r/n,而linux中是/n ,所以会出现错误
使用dos2unix工具进行文件格式转换即可
yum install dos2unix
dos2unix /etc/init.d/ngrok