内网穿透frp 远程访问实验室的机器

由于实验室使用了一台台式机和一台笔记本,台式机没有无线网卡,连的宽带,笔记本链得wifi,虽然都是内网,但是笔记本没有连上台式的ip,因此决定尝试一下内网穿透。

需要的环境

  • 一台有公网ip的云服务器(如阿里云服务器)
  • 一台内网机器(需安装配置openssh)
  • 自己的笔记本(用来通过ssh访问内网机器)
  • 在内网穿透成功之前可以用来传输ssh公钥的平台(如有道云笔记),也可以内网机器ssh连接云服务器scp传输文件

预配置

  • 台式机与云服务器的ssh配置,将台式机的公钥放到云服务器的authorized_keys中。使用密码登陆也可以。

安装frp

  • 去github上下载对应版本的frp(linux用wget) 网址github,云服务器和台式机都要下载。
  • 解压 sudo tar -zxvf frp_0.20.0_linux_amd64文件名按照自己下载的版本进行修改。

云服务器的配置

  • 配置
    sudo vim frps.ini
[common]
bind_port = 8099

8099是云服务器监听的端口,可自定义。

如果是阿里云服务器需要到控制台开放对应的端口

  • 启动
    sudo ./frps -c ./frps.ini
    显示
2019/09/07 21:48:03 ^[[1;34m[I] [service.go:128] frps tcp listen on 0.0.0.0:7000^[[0m
2019/09/07 21:48:03 ^[[1;34m[I] [service.go:161] http service listen on 0.0.0.0:8099^[[0m

台式机的配置

sudo vim frpc.ini

[common]
server_addr = 你的公网ip地址
server_port = 8099

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8098

server_port是公网服务舰艇的端口,remote_port = 8098是ssh访问的时候的端口,需要在控制台开放此端口(入方向)。

  • 启动
    ./frpc -c ./frpc.ini
    显示
2019/09/08 10:59:23 ^[[1;34m[I] [proxy_manager.go:300] proxy removed: []^[[0m
2019/09/08 10:59:23 ^[[1;34m[I] [proxy_manager.go:310] proxy added: [ssh]^[[0m
2019/09/08 10:59:23 ^[[1;34m[I] [proxy_manager.go:333] visitor removed: []^[[0m
2019/09/08 10:59:23 ^[[1;34m[I] [proxy_manager.go:342] visitor added: []^[[0m
  • 隧道建立成功之后,云服务器显示
2019/09/08 10:58:53 ^[[1;34m[I] [control.go:220] [e7c5fd8b05f5b338] control writer is closing^[[0m
2019/09/08 10:58:53 ^[[1;34m[I] [proxy.go:73] [e7c5fd8b05f5b338] [ssh] proxy closing^[[0m
2019/09/08 10:58:53 ^[[1;34m[I] [proxy.go:119] [e7c5fd8b05f5b338] [ssh] listener is closed^[[0m
2019/09/08 10:58:53 ^[[1;34m[I] [control.go:292] [e7c5fd8b05f5b338] client exit success^[[0m

连接

笔记本新开一个终端,我这里使用的是git bash.
ssh -p remote_port root@ip地址或域名

后台启动

  • 云服务器
    sudo nohub ./frps -c ./frps.ini &
  • 台式机(内网机器)
    nohup ./frpc -c ./frpc.ini &

开启web

frpc.ini添加

[web]
type = http
local_port = 80(要转发的端口)
custom_domains = 你的公网ip地址

frps.ini添加

vhost_http_port = 8080

vhost_http_port为自己设定的http访问端口

重新启动即可访问台式机的web

  • 云服务器
    sudo nohub ./frps -c ./frps.ini &
  • 台式机(内网机器)
    nohup ./frpc -c ./frpc.ini &

重新启动需要kill掉之前的线程ps aux|grep frps,ps aux|grep frpc,使用ps可查看fpr运行的线程id。

参考文章