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的用户和密码。
标签:跳板,vscode,server,GOARCH,key,服务器,内网,ngrok 来源: https://blog.csdn.net/hekaijie123/article/details/119079750