前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FRP 搭建内网穿透

FRP 搭建内网穿透

作者头像
chuchur
发布2022-10-25 15:06:04
1.7K0
发布2022-10-25 15:06:04
举报
文章被收录于专栏:禅境花园禅境花园

环境

公司有台机电脑,一直开着,你回到家想登录这台机器,想干点啥。

nohup

在后台执行程序,断开终端依然执行。后面会用到 后台执行 test.sh:

代码语言:javascript
复制
nohup sh test.sh &

重启进程:

1)先拿到进程ID

代码语言:javascript
复制
ps -aux|grep test.sh| grep -v grep | awk '{print $2}'

a:显示所有程序

u:以用户为主的格式来显示

x:显示所有程序,不以终端机来区分

grep -v参数可以将grep命令排除掉

awk提取进程ID 

2)这样拿到进程ID,然后杀掉进程 ,重启就可以了

代码语言:javascript
复制
kill -9 12345 
nohup sh test.sh &

服务端设置

下载最新的 FRP :https://github.com/fatedier/frp/releases 几种常用架构如:

系统

版本

Linux(Intel 64位CPU)

frp_0.44.0_linux_amd64.tar.gz

Windows(Intel 64位CPU)

frp_0.44.0_windows_amd64.zip

Mac(Intel芯片)

frp_0.44.0_darwin_amd64.tar.gz

Mac (M1芯片)

frp_0.44.0_darwin_arm64.tar.gz

代码语言:javascript
复制
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
# 改个名
mv frp_0.44.0_linux_amd64 frp
# 进到目录
cd frp

只需要看这几个目录就可以,frpsfrps.inifrpcfrpc.ini

前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件

代码语言:javascript
复制
#干掉不需要的
rm -rf frpc*

# 修改配置文件
vi frps.ini

这个文件应有如下格式:

代码语言:javascript
复制
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443

解释

bind_port

表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

dashboard_port

是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。

token

是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

dashboard_user、dashboard_pwd

表示打开仪表板页面登录的用户名和密码,自行设置即可。

vhost_http_port、vhost_https_port

用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。

启动

代码语言:javascript
复制
./frps -c frps.ini

看到以下,即表示运行正常

代码语言:javascript
复制
2019/01/12 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2019/01/12 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080
2019/01/12 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443
2019/01/12 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2019/01/12 15:22:39 [I] [root.go:210] Start frps success

此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面

frp.png
frp.png

挂起后端运行即可:

代码语言:javascript
复制
nohup ./frps -c frps.ini &

nginx 代理下仪表板,

代码语言:javascript
复制
server {
  server_name xx.xxx.com; #你的域名

  location / {
    proxy_pass http://localhost:7500;
  }
}

访问 xx.xxx.com 即可看到版仪表,至此,服务端配置完成

客户端(Mac)

下载对应的版本, 编辑 frpc.ini 文件, 以下是 Mac 机的例子,分别代理了mysql 和 ssh:

代码语言:javascript
复制
[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678

[mysql]
type = tcp
local_ip = 127.0.0.1           
local_port = 3306
remote_port = 7001  

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

其中common字段下的三项即为服务端的设置。

解释

server_addr

为服务端IP地址,填入即可。

server_port

为服务器端口,填入你设置的端口号即可,如果未改变就是7000

token

是你在服务器上设置的连接口令,原样填入即可。

[xxx]

表示一个规则名称,自己定义,便于查询即可。

type

表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。

local_port

是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。

remote_port

是该条规则在服务端开放的端口号,自己填写并记录即可。

启动客户端frp

代码语言:javascript
复制
nohup ./frpc -c ./frpc.ini

不出意外的话,客户端的终端会提示你登录服务端成功。

如果你的服务端安装在阿里云,你还得在安全组开启 7000,7001,7002 这三个端口

随便找台机器 测试远程登录ssh 和mysql :

代码语言:javascript
复制
# ssh
# ssh 客户端用户名@服务端IP -p remote_port
ssh chuchur@x.x.x.x 7002

# mysql
# mysql -h 服务端IP -p remote_port -u mysql账号 -pmysql密码
mysql -h x.x.x.x -p 7001 -u root -p1234567

不出意外的话,客户端的终端会提示你登录服务端成功

客户端(Windows):

代码语言:javascript
复制
[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678

[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001 

[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

[c_static_file]
type = tcp
remote_port = 6001
plugin = static_file
plugin_local_path = C:
plugin_strip_prefix = driver_c
plugin_http_user = 自定义名称,这个和系统登录的用户名不是一个东西,随便写就行
plugin_http_passwd = 自定义密码

[d_static_file]
type = tcp
remote_port = 6002
plugin = static_file
plugin_local_path = D:
plugin_strip_prefix = driver_d
plugin_http_user = 自定义名称,同上
plugin_http_passwd = 自定义密码

RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。

SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。

static_file 是文件访问服务的客户端插件名称,这个是固定的; plugin_local_path = C: 表示可访问整个C盘,对应下面的是D盘; driver_cdriver_d 这两个前缀也是自定义的

启动成功后,就可以在浏览器直接访问:http://x.x.x.x:6001/driver_c/,访问的时候提示你输入用户名和密码就是上面配置的plugin_http_user和passwd。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=39cgr8qwbskkc

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • nohup
  • 服务端设置
  • 客户端(Mac)
  • 客户端(Windows):
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档