Ubuntu – 基于 frp 的SSH内网穿透

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖.

可以在 Github 的 Release
__
页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中.

Github:

https://github.com/gofrp/frp-site __

https://github.com/fatedier/frp __

frp 中文文档:https://github.com/fatedier/frp/blob/dev/README_zh.md
__

frp 中文文档:https://gofrp.org __

frp 安装部署主要是:解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录.

这里以 通过 SSH 访问内网机器 为例:

服务器端

[1] – 下载 frp:

mkdir frp && cd frp

wget https://github.com/fatedier/frp/releases/download/v0.34.2/frp_0.34.2_linux_amd64.tar.gz
tar -zxvf frp_0.34.2_linux_amd64.tar.gz 
cd frp_0.34.2_linux_amd64/

[2] – 修改服务器端配置文件 frps.ini,这里采用最简化配置,设置 frp 服务器用户接收客户端连接的端口:

[common]
bind_port = 7000

[3] – 启动服务器端 frps 服务:

# 启动服务端
./frps -c ./frps.ini

客户端

[1] – 下载 frp:

mkdir frp && cd frp

wget https://github.com/fatedier/frp/releases/download/v0.34.2/frp_0.34.2_linux_amd64.tar.gz
tar -zxvf frp_0.34.2_linux_amd64.tar.gz 
cd frp_0.34.2_linux_amd64/

[2] – 修改客户端配置文件 frpc.ini,如:

[common]
server_addr = xxx.xxx.xxx.xxx # frps 所在服务器的公网 IP
server_port = 7000

[ssh]
type = tcp
local_ip = 192.168.1.65 # 本地需要暴露到公网的服务地址
local_port = 22         # 本地需要暴露到公网的服务地址
remote_port = 6000      # 在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口

[3] – 启动客户端 frpc 服务:

./frpc -c ./frpc.ini

配置完成,即可通过 SSH 访问内网机器,如:

ssh -oPort=6000 [email protected]

frp 会将请求 xxx.xxx.xxx.xxx:6000 的流量转发到内网机器的 22 端口.