ngrok 内网穿透 vscode跳板机配置

因为疫情,学校假期要赶人。服务器连接学校局域网,回家无法直接访问,要设置内网穿透。内网穿透需要一个外网服务器A(我用阿里云服务器,学生优惠10块钱一个月),一台能够连接外网的内网主机B。 外网服务器要解析域名,在阿里云买最便宜的几乎不要钱,要几天的审核时间。

1. 在外网的服务器安装git

sudo apt-get update sudo apt-get install git git --version ##查看git

2. 安装GO环境,因为ngrok依赖go

sudo apt-get install golang-go go version ##查看go

3. 安装ngrok

cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/ngrok/ 
export NGROK_DOMAIN="abc.xyz"    #abc.xyz为自己的域名,不要www前缀

4. 生成证书并覆盖证书(依次复制运行)

cd /usr/local/ngrok
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 server.key 2048 
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr 
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

5. 生成服务器端(外网服务器),以下命令在外网服务器执行

cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-server

生成成功后在ngrok的bin下产生ngrokd文件,过程中可能遇到github的连接网络问题,这个问题比较杂,根据提示去百度。

注:不同系统的生成客户端命令不同,需要更改GOODS和GOARCH:

GOOS=linux GOARCH=386            #Linux 平台 32 位系统
GOOS=linux GOARCH=amd64          #Linux 平台 64 位系统
GOOS=windows GOARCH=386          #Windows 平台 32 位系统
GOOS=windows GOARCH=amd64        #Windows 平台 64 位系统
GOOS=darwin GOARCH=386           #MAC 平台 32 位系统
GOOS=darwin GOARCH=amd64         #MAC 平台 64 位系统
GOOS=linux GOARCH=arm            #ARM 平台

生成客户端(对应内网主机的操作系统),以下命令在外网服务器执行

cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-client

成功后会在ngrok/bin/下生成ngrok文件,window则生成windows_amd64文件夹,里面有ngrok.exe文件。客户端生成文件要从外网服务器A中下载到内网主机B,可以通过winscp等文件传输工具。

6. 启动服务端(在外网服务器)

在ngrok文件夹下执行

root:/usr/local/ngrok# ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.xyz" -httpAddr=":10000" -httpsAddr=":10001" -tunnelAddr=":10002" 

参数说明: #-domain 访问ngrok是所设置的服务地址生成证书时那个 #-httpAddr http协议端口 默认为80 #-httpsAddr https协议端口 默认为443 #-tunnelAddr 通道端口 默认4443

建议设置端口号10000以上,降低被黑的概率。不设就是默认值。如果要在后台运行,在命令前面加nohup

7. 启动客户端,以下操作均在内网主机中进行

前文说了,客户端生成ngrok文件文件要从外网服务器A中下载到内网主机B。然后在ngrok所处的文件夹下创建一个文本文件ngrok.cfg(可以txt写好再改成cfg后缀),写类似如下内容:

server_addr: "abc.xyz:10002"       
trust_host_root_certs: false
tunnels:
    mstsc1:
        remote_port: 22000  
        proto:
            tcp: 3389
    ssh1:
        remote_port: 22001
        proto:
            tcp: 199.99.99.99:22

server_addr: 写外网服务器的地址和前面设置的tunnelAddr端口号。remote_port为云服务器的端口22001,映射到内网服务器199.99.99.99:22。内网的ip可以映射到局域网内的其他机器,如果不填ip则映射到内网本机的端口。有需要的话,tcp也可以换成http、https等协议。每个缩进为4个空格为单位,两个貌似也行?

然后在该文件夹下执行

.\ngrok.exe -config ngrok.cfg start-all ##windows 命令 ./ngrok -config ngrok.cfg start-all 
  ##linux命令

成功会显示绿色的online。阿里云防火墙打开10000,10001,10002,22000,22001等你设置的端口,否则连不上。本文教程是ngrok1.7版本,2.0版本有中文文档,语法上均有些许不同,不可混用。

10. 内网穿透的vscode远程连接,有需要可看

vscode安装好remote ssh插件。在ssh连接处打开config配置。

Host 跳板机
    HostName abc.xyz 
    Port 22001                #跳板机转到内网的ssh端口
    User root                 #跳板机用户名
 
Host 内网主机C                #内网C主机
    HostName 199.99.99.20     #内网ip
    User hehe                 #内网用户名
    ProxyCommand ssh -W %h:%p 跳板机           #最后名字写跳板机的名字

填好之后可以直接连接内网主机C,要填两轮密码。

11. 内网穿透的winscp远程连接,有兴趣就看

在新建站点的时候,新建站点仍写最终的C目标站点。并且点击高级,在隧道设置那里输入中间主机B的用户和密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值