• Ngrok实现内网穿透


    ngrok 介绍:

    ngrok 是一款用 go 语言开发的开源软件,它是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.

    ngrok 可以做 TCP 端口转发,对于 Linux 可以将其映射到 22 端口进行 SSH 连接,

    Windows 的远程桌面可以将其映射到 3389 端口来实现.

    同理,如果要做 MySQL 的远程连接,只需映射 3306 端口即可


    【frp 更加好用,推荐使用frp github:GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.


    准备工作:

    建议为腾讯或者阿里云主机

    域名:ngrok.dvcloud.xin

    系统:centos7.6

    功能:主要使本地电脑远程映射到公网上面

    操作如下:

    1. 安装 gcc 和git

    yum install gcc git  -y

        2.安装go 环境

    yum install golang -y

    如果提示包不存在,需要安装 

    1. yum install -y epel-release
    2. yum install golang -y

    3.下载 ngrok 源码

    1. cd /usr/local/
    2. git clone https://github.com/inconshreveable/ngrok.git

    4.生成证书:

    1. cd /usr/local/ngrok
    2. openssl genrsa -out rootCA.key 2048  
    3. openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.dvcloud.xin" -days 5000 -out rootCA.pem  
    4. openssl genrsa -out server.key 2048  
    5. openssl req -new -key server.key -subj "/CN=ngrok.dvcloud.xin" -out server.csr  
    6. openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

    将生成的证书替换掉 ngrok默认的证书

    1. \cp rootCA.pem assets/client/tls/ngrokroot.crt 
    2. \cp server.crt assets/server/tls/dvcloud.crt 
    3. \cp server.key assets/server/tls/dvcloud.key

    5.编译ngrokd 服务端

    GOOS=linux GOARCH=amd64 make release-server

    6.编译客户端

    1. GOOS=windows GOARCH=amd64 make release-client
    2. #编译成功后会在ngrok/bin/下面生成一个windows_amd64目录下面有ngrok.exe
    3. #Linux 平台 32 位系统:GOOS=linux GOARCH=386
    4. #Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
    5. #Windows 平台 32 位系统:GOOS=windows GOARCH=386
    6. #Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
    7. #MAC 平台 32 位系统:GOOS=darwin GOARCH=386
    8. #MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
    9. #ARM 平台:GOOS=linux GOARCH=arm

    7.添加自定义系统服务

    1. vim /usr/lib/systemd/system/ngrok.service
    2. [Unit]
    3. Description=ngrok
    4. After=network.target
    5.  
    6. [Service]
    7. Type=simple  
    8. Restart=always
    9. RestartSec=1min
    10. ExecStart=/usr/local/ngrok/bin/ngrokd -tlsCrt=/usr/local/ngrok/assets/server/tls/dvcloud.crt -tlsKey=/usr/local/ngrok/assets/server/tls/dvcloud.key  -domain=ngrok.dvcloud.xin -httpAddr=:800 -httpsAddr=:801 -tunnelAddr=:55552 %i
    11. ExecStop=/usr/bin/killall ngrok
    12. PrivateTmp=true
    13. [Install]
    14. WantedBy=multi-user.target
    1. # ngrokd 日志可以通过启动参数指定  -log=/var/log/ngrokd.logs
    2. # 重载系统服务:
    3. systemctl daemon-reload
    4. # 设置开机启动
    5. systemctl enable ngrok.service
    6. # 启动服务
    7. systemctl start ngrok.service

    日志可以在 /var/log/messages

    windows 10 客户端操作

    将生成的/usr/local/ngrok/bin/windows_amd64/ 整个目录复制到  C:\Program Files 目录内

    然后写一个配置文件ngrok.conf

    内容如下:

    1. server_addr: ngrok.dvcloud.xin:55552
    2. trust_host_root_certs: false
    3. tunnels:
    4.     ssh:
    5.         remote_port: 36603
    6.         proto:
    7.             tcp: 3389

    然后保存,手动执行命令测试是否正常

    测试时正常的,为了方便下次电脑启动直接使用,因此

    下载nssm.exe 将ngrok 封装为windows启动服务

    NSSM - the Non-Sucking Service Manager

    然后,就可以直接运行了。

    Linux x64 位客户端操作如下:

    解压到 /usr/local 目录

    tar xvf ngrok.tar.gz -C /usr/local

    然后修改 配置/usr/local/ngrok/conf/ngrok.conf

    添加开机启动服务

    1. vim /usr/lib/systemd/system/ngrok.service
    2. [Unit]
    3. Description=ngrok
    4. After=network.target
    5.   
    6. [Service]
    7. Type=simple  
    8. Restart=always
    9. RestartSec=1min
    10. ExecStart=/usr/local/ngrok/bin/ngrok -config=/usr/local/ngrok/conf/ngrok.conf -log /var/log/ngrok/ngrok.log start-all
    11. ExecStop=/usr/bin/killall ngrok
    12. PrivateTmp=true
    13.  
    14. [Install]
    15. WantedBy=multi-user.target
    1. # 重载系统服务:
    2. systemctl daemon-reload
    3. # 设置开机启动
    4. systemctl enable ngrok.service
    5. # 启动服务
    6. systemctl start ngrok.service

  • 相关阅读:
    一文全面了解低代码
    Linux: command: cpio
    浅浅的整理一下机器学习简单资料
    python数据分析基础—取某列字符的前几个字符
    3D格式转换工具HOOPS Exchange最全技术指南(一):4大功能特征与典型使用场景
    URL和URI的区别
    KubeEdge v1.15.0发布!新增5大特性
    javaweb网络教学及评价系统
    FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
    IE退役倒计时, Edge接棒
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126447189