Frp内网穿透实现ssh远程连接和博客部署
- 整理一下使用 Frp 实现内网穿透实现ssh或博客部署的笔记。Frp官方文档上有例子可以指导部署,看文档就可以自行完成。需要整备的工具:
1.一台具有公网 IP 的服务器(VPS)
2.一台需要远程控制的电脑,可以是 Win 或 Linux (这里我用我的树莓派的 Ubuntu 为例)。
3.一台可以联网使用的电脑,当然包括舍友牌(用于测试或者配置服务器)。
另:如果内穿博客需要一个域名,域名自行购买即可。
配置服务端
- 服务端就是我们的具有公网 IP 的服务器,可以去阿里云或腾讯云自行购买。
- 使用③(可以联网的 Win 电脑),通过 CMD 采用 OpenSSH (一般 Win 都自带,不用去安装其它的类似于 putty、 hyper 等的 SSH 连接工具)去连接服务器,通过如下命令获取压缩包,并解压。压缩包可前往FRP仓库获取最新安装包。注:如果你的服务器下载较慢,可以先下载到你的电脑,再通过 SCP 命令(很简单,百度一下就有)将其上传到服务器也可以。
1
2wget https://github.com/fatedier/frp/releases/download/v0.60.1/frp_0.60.1_linux_amd64.tar.gz
tar -xzf frp_0.50.0_linux_amd64.tar.gz
解压后,在当前目录下会出现frp_0.50.0_linux_amd64文件夹,压缩包可以删掉了,进入文件夹,你会看到5个文件(文件夹):frps、frps.toml、frpc、frpc.toml和LICENCE。frps和frps.toml是配置服务端留下, frpc和frpc.toml是配置客户端的,这里用不到可以删掉。首先将frps文件夹通过如下命令将它放移动到
/usr/local/bin/
(为什么要放入这里,因为Linux系统的这个路径下默认放程序,当然也可以放入其它路径下,但是得配置环境),最后赋予文件执行权限。1
2sudo mv frps /usr/local/bin/
sudo chmod +x /usr/local/bin/frps接着新建一个 frp 文件夹将 frps.toml 配置文件移动到
/etc/frp/
路径下。1
2sudo mkdir -p /etc/frp
sudo mv frps.ini /etc/frp/frps.toml这样就安装好了,可以采用验证是否安装完成并可以执行,如果输出版本信息则表示安装完成。
1
2ls -l /usr/local/bin/frps
frps -v安装好后,我们先将frps程序通过systemed工具实现后台运行,采用如下命令在systemed默认服务脚本路径下新建一个frps.service文件,并配置frps服务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16sudo vim /etc/systemd/system/frps.service
# 文件写入如下内容:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,修改为刚刚frps和frps.toml的安装路径
ExecStart = /usr/local/bin/frps -c /etc/frp/frps.toml
[Install]
WantedBy = multi-user.target保存退出,使用如下命令启动或者关闭frps服务,并设置开机自启动。
1
2
3
4
5
6
7
8
9
10
11
12# 清除systemctl缓存,重加载systemctl服务
sudo systemctl daemon-reload
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置 frps 开机自启动
sudo systemctl enable frps下面配置frps.toml文件,打开编辑,默认里面内容就已经有
1
2
3
4# 该端口用于接收客户端连接的端口,大白话讲就是与客户端映射的端口,不需要修改。
bindPort = 7000
# 如果你要内穿你的博客就加上这个,这是HTTP 请求的监听端口为 8080。
vhostHTTPPort = 80801
2# 完成frps.toml文件配置后,重启systemed的frps服务
sudo systemctl restart frps
配置客户端
客户端就是②需要被远程连接的电脑,重复上面服务端的操作,直到配置frpc.toml文件。注意设置systemed时修改为frpc,不是frps。下面配置frps.toml文件,打开编辑,将下面内容复制并按要求对应修改,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17serverAddr = "x.x.x.x" # 你的服务器公网ip
serverPort = 7000 # 对应你配置的frps.toml中的bindPort端口
# 如下是配置ssh远程连接的,都不用修改直接复制粘贴
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
# 如果你要内穿博客,就复制修改下面内容,两个也可以一起配置。
[[proxies]]
name = "web" # 这个随便你起
type = "http" # 与frps.toml中配置的vhostHTTPPort对应
localPort = 4000 # 你的博客端口,这里我博客用的hexo,默认是4000端口
customDomains = ["www.yourdomain.com"] # 你的域名地址,注:你域名要在对应服务商进行域名解析。完成frpc.toml文件配置后,保存退出编辑。重启systemed的frpc服务
1
sudo systemctl restart frpc
现在已经完成了ssh和博客的内网穿透,下面进行测试,
在cmd进行ssh远程连接
1
2ssh -o Port=6000 test@x.x.x.x # -o Port=6000 跟你frps.toml中的remotePort = 6000
对应,test你用户名,@你的服务器公网Ip浏览器搜索你的博客
1
www.yourdomain.com:8080 # 8080端口就是你在配置frps.toml的监听端口
Windows系统
- 如果你需要被控的电脑是Win系统,则在仓库下载对应的Win软件包,注意查看自己电脑的架构别下载错了。
- 下载完解压,可以安装在D盘,但不要使用含有中文的路径。还是跟上面一样内容配置frpc.toml,完成后我们采用 .vbs 脚本实现后台运行frpc服务,在frpc同一目录下新建一个frp.vbs文件,编辑如下内容。
1
2set ws=WScript.CreateObject("WScript.Shell")
ws.Run "D:\frp\frpc.exe -c D:\frp\frpc.ini",0 # 这里将你的frpc.exe的路径对应修改 - 完成保存,win+r输入gpedit.msc 打开本地组策略编辑器 => 计算机配置 => Windows设置 => 脚本 (启动/关机),双击右边的启动,点击添加,脚本名浏览将刚刚的frp.vbs文件导入,脚本参数不用设置,确定、确定、关闭。这样开机就可以自动后台运行 frpc 服务,可以通过任务管理器的进程查看frpc.exe是否在后台运行。