Ngrok-server安装
环境:Ubuntu
安装Git
sudo apt-get update
sudo apt-get install git
复制
安装GO
sudo apt-get install golang-go
复制
编译生成ngrok服务器程序
export GOROOT=/usr/local/go/
export GOPATH=/usr/local/go/bin/
cd /usr/local/ngrok/
复制
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.xxxx.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.xxxx.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
复制
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
复制
make release-server
复制
报错
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
-debug=false \
-o=src/ngrok/client/assets/assets_release.go \
assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
-debug=false \
-o=src/ngrok/server/assets/assets_release.go \
assets/server/...
go get -tags 'release' -d -v ngrok/...
import "container/list": import path doesn't contain a hostname
package container/list: unrecognized import path "container/list"
import "encoding/gob": import path doesn't contain a hostname
package encoding/gob: unrecognized import path "encoding/gob"
import "fmt": import path doesn't contain a slash
package fmt: unrecognized import path "fmt"
import "io": import path doesn't contain a slash
package io: unrecognized import path "io"
import "os": import path doesn't contain a slash
package os: unrecognized import path "os"
import "runtime": import path doesn't contain a slash
package runtime: unrecognized import path "runtime"
import "sync": import path doesn't contain a slash
package sync: unrecognized import path "sync"
import "time": import path doesn't contain a slash
package time: unrecognized import path "time"
import "bufio": import path doesn't contain a slash
package bufio: unrecognized import path "bufio"
import "bytes": import path doesn't contain a slash
package bytes: unrecognized import path "bytes"
import "compress/bzip2": import path doesn't contain a hostname
package compress/bzip2: unrecognized import path "compress/bzip2"
import "compress/flate": import path doesn't contain a hostname
package compress/flate: unrecognized import path "compress/flate"
import "compress/gzip": import path doesn't contain a hostname
package compress/gzip: unrecognized import path "compress/gzip"
import "context": import path doesn't contain a slash
package context: unrecognized import path "context"
import "crypto": import path doesn't contain a slash
package crypto: unrecognized import path "crypto"
import "crypto/rand": import path doesn't contain a hostname
package crypto/rand: unrecognized import path "crypto/rand"
import "crypto/rsa": import path doesn't contain a hostname
package crypto/rsa: unrecognized import path "crypto/rsa"
import "crypto/sha1": import path doesn't contain a hostname
package crypto/sha1: unrecognized import path "crypto/sha1"
import "crypto/sha256": import path doesn't contain a hostname
package crypto/sha256: unrecognized import path "crypto/sha256"
import "crypto/sha512": import path doesn't contain a hostname
package crypto/sha512: unrecognized import path "crypto/sha512"
import "crypto/tls": import path doesn't contain a hostname
package crypto/tls: unrecognized import path "crypto/tls"
import "crypto/x509": import path doesn't contain a hostname
package crypto/x509: unrecognized import path "crypto/x509"
import "encoding/base64": import path doesn't contain a hostname
package encoding/base64: unrecognized import path "encoding/base64"
import "encoding/binary": import path doesn't contain a hostname
package encoding/binary: unrecognized import path "encoding/binary"
import "encoding/hex": import path doesn't contain a hostname
package encoding/hex: unrecognized import path "encoding/hex"
import "encoding/json": import path doesn't contain a hostname
package encoding/json: unrecognized import path "encoding/json"
import "encoding/pem": import path doesn't contain a hostname
package encoding/pem: unrecognized import path "encoding/pem"
import "encoding/xml": import path doesn't contain a hostname
package encoding/xml: unrecognized import path "encoding/xml"
import "errors": import path doesn't contain a slash
package errors: unrecognized import path "errors"
import "flag": import path doesn't contain a slash
package flag: unrecognized import path "flag"
import "io/ioutil": import path doesn't contain a hostname
package io/ioutil: unrecognized import path "io/ioutil"
import "net": import path doesn't contain a slash
package net: unrecognized import path "net"
import "strconv": import path doesn't contain a slash
package strconv: unrecognized import path "strconv"
import "strings": import path doesn't contain a slash
package strings: unrecognized import path "strings"
import "math/rand": import path doesn't contain a hostname
package math/rand: unrecognized import path "math/rand"
import "net/http": import path doesn't contain a hostname
package net/http: unrecognized import path "net/http"
import "net/http/httptrace": import path doesn't contain a hostname
package net/http/httptrace: unrecognized import path "net/http/httptrace"
import "net/url": import path doesn't contain a hostname
package net/url: unrecognized import path "net/url"
import "unicode/utf8": import path doesn't contain a hostname
package unicode/utf8: unrecognized import path "unicode/utf8"
import "unsafe": import path doesn't contain a slash
package unsafe: unrecognized import path "unsafe"
import "path/filepath": import path doesn't contain a hostname
package path/filepath: unrecognized import path "path/filepath"
import "os/exec": import path doesn't contain a hostname
package os/exec: unrecognized import path "os/exec"
import "regexp": import path doesn't contain a slash
package regexp: unrecognized import path "regexp"
import "os/signal": import path doesn't contain a hostname
package os/signal: unrecognized import path "os/signal"
import "syscall": import path doesn't contain a slash
package syscall: unrecognized import path "syscall"
import "log": import path doesn't contain a slash
package log: unrecognized import path "log"
import "log/syslog": import path doesn't contain a hostname
package log/syslog: unrecognized import path "log/syslog"
import "math": import path doesn't contain a slash
package math: unrecognized import path "math"
import "reflect": import path doesn't contain a slash
package reflect: unrecognized import path "reflect"
import "runtime/debug": import path doesn't contain a hostname
package runtime/debug: unrecognized import path "runtime/debug"
import "runtime/pprof": import path doesn't contain a hostname
package runtime/pprof: unrecognized import path "runtime/pprof"
import "sort": import path doesn't contain a slash
package sort: unrecognized import path "sort"
import "sync/atomic": import path doesn't contain a hostname
package sync/atomic: unrecognized import path "sync/atomic"
import "unicode": import path doesn't contain a slash
package unicode: unrecognized import path "unicode"
import "html/template": import path doesn't contain a hostname
package html/template: unrecognized import path "html/template"
import "net/http/httputil": import path doesn't contain a hostname
package net/http/httputil: unrecognized import path "net/http/httputil"
import "path": import path doesn't contain a slash
package path: unrecognized import path "path"
import "os/user": import path doesn't contain a hostname
package os/user: unrecognized import path "os/user"
make: *** [deps] Error 1
复制
这是go语言版本过低,升级go语言
sudo apt-get purge golang-go
apt-get install golang-1.10
ln -s /usr/local/go/bin/go /usr/bin/go
复制
编译客户端
GOOS=windows #系统
GOARCH=amd64 #64位系统
GOARCH=386 #32位系统
GOOS=windows GOARCH=amd64 make release-client
复制
启动ngrok服务
/usr/local/ngrok/bin/ngrokd -tlsKey="/usr/local/ngrok/assets/server/tls/snakeoil.key" -tlsCrt="/usr/local/ngrok/assets/server/tls/snakeoil.crt" -domain="ngrok.xxxx.cn" -httpAddr=":8080" > log.out &
复制
防火墙打开端口
ufw allow 8081
ufw allow 4443
复制
配置客户端
新建ngrok.cfg文件
server_addr: "ngrok.xxxx.cn:4443"
trust_host_root_certs: false
tunnels:
http:
proto:
http: "127.0.0.1:80"
subdomain: sub
ssh:
remote_port: 8082
proto:
tcp: "127.0.0.1:3389"
复制
新建start.bat文件
@echo on
cd %cd%
ngrok -config=ngrok.cfg -log=ngrok.log start ssh http
复制
双击运行start.bat
开启内网穿透。